SpringBoot自动配置
Spring Boot是一个基于Spring框架的快速开发应用程序的工具。其中一个重要的特性就是自动配置(Auto-configuration)功能,通过简单地添加依赖和配置,Spring Boot可以为应用程序自动配置各种常见的功能和组件。
@EnableAutoConfiguration注解是实现自动配置功能的核心注解之一。它告诉Spring Boot去自动配置应用程序所需要的各种组件和功能。
当Spring Boot应用程序启动时,它会扫描所有的类路径下的jar包,并根据其中的内容来决定需要自动配置哪些组件和功能。例如,如果classpath中包含了spring-boot-starter-web依赖,那么Spring Boot会自动配置一个嵌入式的Tomcat服务器、Spring MVC框架以及其他相关组件。
@EnableAutoConfiguration注解通常和@SpringBootApplication注解一起使用,@SpringBootApplication注解包含了@Configuration、@EnableAutoConfiguration和@ComponentScan注解,用于指定Spring Boot应用程序的配置信息、自动配置和组件扫描范围。
源码分析
-
@EnableAutoConfiguration 注解内部使用 @Import(AutoConfigurationImportSelector.class)来加载配置类。
-
查看源码可知,通过
autoConfigurationEntry.getConfigurations()获取配置文件的全部参数
- 在这个
getCandidateConfigurations方法中看到,配置文件位置:META-INF/spring.factories,该配置文件中定义了大量的配置类,当 SpringBoot 应用启动时,会自动加载这些配置类,初始化Bean
- 查询导入的名为spring-boot-autoconfigure-xxxxx.jar的依赖包,即可看到 spring.factories
- 当然并不是所有的Bean都会被初始化,在配置类中使用Condition来加载满足条件的Bean,我们以Redis为例查看源码信息。
- 并且以
@ConditionalOnMissingBean这个注解规定了,当我们的Spring容器中没有这个Bean对象才会去构造对象。