SpringBoot总结(二)——Spring Boot的自动配置

(1)首先查看启动类,类上有一个@SpringBootApplication注解。
在这里插入图片描述
该注解标注在某个类上,说明该类为 SpringBoot的主配置类;运行这个类的main()方法来启动该Spring Boot的应用。
(2)点开@SpringBootApplication注解,我们能够发现,其实它是一个组合注解 。下面我们重要看注解 @SpringBootConfiguration@EnableAutoConfiguration
在这里插入图片描述
@SpringBootConfiguration注解
下面看一下@SpringBootConfiguration注解:
在这里插入图片描述
表明该类是一个Spring的配置类。
下面看一下@Configuration注解:
在这里插入图片描述
表明Spring的配置类也是Spring的一个组件。

@EnableAutoConfiguration注解
@EnableAutoConfiguration注解是开启自动配置的功能的。
在这里插入图片描述
先看一下@AutoConfigurationPackage这个注解:
在这里插入图片描述
注:这个注解是自动配置包,使用的是@Import来给Spring容器中导入一个组件 ,这里导入的是AutoConfigurationPackages.Registrar.class

继续看AutoConfigurationPackages.Registrar.class
在这里插入图片描述
注:通过这个方法来获取扫描的包路径。
我们在该代码处,打个断点,debug项目,看一下获取到的包路径:
在这里插入图片描述
再来计算一下metadata的值:
在这里插入图片描述
这个也就是@SpringBootApplication注解上的Springboot01HelloworldApplication类,也就是主配置类。
注:就是将主配置类——@SpringBootApplication标注的类的所在包以及子包里面所有组件扫描加载到Spring容器中。


经过上面的分析,知道并获取了包扫描的路径,下面看一下具体加载的组件。

@Import(AutoConfigurationImportSelector.class)注解
这个注解就是给Spring容器导入组件,
@Import注解就是给Spring容器中导入一些组件;AutoConfigurationImportSelector.class:是组件的选择器。
在这里插入图片描述
AutoConfigurationImportSelector类中有个selectImports方法,该方法是将所有需要导入的组件以全类名的方式返回。——因此这些组件就会添加到容器中了。
类似的,在代码处打个断点,debug
下面分析具体怎样获取这些配置类的:
在这里插入图片描述
在这里插入图片描述
最后从META-INF/spring.factories中获得资源,然后通过Properties来进行加载资源。
在这里插入图片描述
在这里插入图片描述
spring-boot-autoconfigure包下META-INF/spring.factories:
在这里插入图片描述
在这里插入图片描述
注:SpringBoot就会把这些自动配置类加到容器中。

猜你喜欢

转载自blog.csdn.net/weixin_43759352/article/details/107745312