SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】
创始人
2024-02-21 07:10:53
0

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.15 自动配置原理【1】
          • 1.15.1 看源码了
          • 1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

1 自动配置

1.15 自动配置原理【1】

1.15.1 看源码了

依赖一个程序来看,

package com.dingjiaxiong;import com.dingjiaxiong.bean.CartoonCatAndMouse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;/*** ClassName: App* date: 2022/10/25 13:03** @author DingJiaxiong*/@SpringBootApplication
@Import(CartoonCatAndMouse.class)
public class App {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(App.class);CartoonCatAndMouse bean = context.getBean(CartoonCatAndMouse.class);bean.play();}}

运行结果

在这里插入图片描述

OK, 结果不重要

整个程序的开始

@SpringBootApplication

这个注解,点击进去看看

在这里插入图片描述

可以看到它是若干个注解的组合注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}

看这三个

在这里插入图片描述

意思就是上面那个是下面3个的合体

点进第一个 SpringBootConfiguration

在这里插入图片描述

又看@Configuration 里面

在这里插入图片描述

主要看这个

然后@Indexed

在这里插入图片描述

再看@EnableAutoConfiguration 【自动配置的开关】

点进去

在这里插入图片描述

主要就是这两个

在这里插入图片描述

看看@ AutoConfigurationPackage

在这里插入图片描述

再看@ComponentScan

在这里插入图片描述

点进去

在这里插入图片描述

基本到头

在这里插入图片描述

经过老师的勾勾选选

在这里插入图片描述

最后剩了俩

在这里插入图片描述

1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

点进Registrar

在这里插入图片描述

这个类的功能就是能够按照BeanDefinition 的形式去定义bean ,并且分情况处理

这一节太难做笔记了…

在这里插入图片描述

对于这个方法进行断点调试

在这里插入图片描述

可以看到这个东西计算出来是我当前的包名

在这里插入图片描述

现在这个方法貌似是获取了我的包

在这里插入图片描述

原因就在于现在我的程序现在在com.dingjiaxiong 包下,这个程序作为整个应用的入口,它需要扫描它所在的包和其子包【扫哪儿就是这样得到的】

所以,@Import({AutoConfigurationPackages.Registrar.class}) 这个东西设置当前配置所在的包作为扫描包,后续要针对当前的包进行扫描【确认包信息】

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...