Spring Boot的自动配置主要通过以下几个步骤实现:
- 在SpringBoot启动的时候,加载主配置类,这个配置类通常带有
@SpringBootApplication
注解。@SpringBootApplication
是一个复合注解,它包括了@Configuration
,@EnableAutoConfiguration
和@ComponentScan
三个注解。其中,@EnableAutoConfiguration
注解就是用于开启自动配置功能的。 - Spring Boot在启动时会加载
META-INF/spring.factories
中定义的所有自动配置类。SpringFactoriesLoader
会扫描所有jar包类路径下的META-INF/spring.factories
文件,并将这些文件包装成Properties
对象。 - 从
Properties
中获取到EnableAutoConfiguration.class
类名对应的值,这些值就是所有需要自动配置的类。然后,Spring Boot将这些类添加到容器中。 - 对于每一个自动配置类,它们会根据特定的条件来决定是否进行自动配置。这些条件通常通过
@Conditional
注解来定义。例如,HttpEncodingAutoConfiguration
类中的@ConditionalOnWebApplication(type=Type.SERVLET)
注解表示只有当当前应用是一个Servlet应用时,这个自动配置类才会生效。 - 自动配置类通常会使用
@ConfigurationProperties
或@EnableConfigurationProperties
注解来绑定配置文件中的属性,以便能够根据这些属性来进行自动配置。例如,DataSourceAutoConfiguration
类中的@EnableConfigurationProperties
和@ConfigurationProperties
注解就是用来绑定数据库连接相关配置的。
总的来说,Spring Boot的自动配置就是在启动时根据预设的规则和条件,自动加载和配置一系列的Bean,从而简化了开发者的配置工作。