@SpringBootApplication注解
- 这个注解是Spring Boot应用的入口,它组合了以下三个关键注解:
- @SpringBootConfiguration:这个注解实际上是@Configuration注解的一个特殊形式,它表明该类是一个配置类,用于定义Bean。
- @EnableAutoConfiguration:这个注解告诉Spring Boot根据类路径下的jar包依赖、配置文件等来启用自动配置。
- @ComponentScan:这个注解告诉Spring在哪些包下扫描组件,默认情况下会扫描当前类所在的包及其子包下的所有组件。
@EnableAutoConfiguration注解
- 这个注解是自动配置的核心,它通过@Import注解导入了AutoConfigurationImportSelector类。
- AutoConfigurationImportSelector类会读取所有jar包中的
META-INF/spring.factories
文件。这个文件中包含了键值对,其中键是EnableAutoConfiguration的完整类名,值是所有需要被自动配置的类的列表。
条件注解
- 自动配置类通常会使用条件注解来确保只有在满足特定条件时才会创建和配置Bean。例如:
- @ConditionalOnClass:当类路径下有指定的类时,才会加载配置类。
- @ConditionalOnMissingBean:当Spring容器中没有指定Bean时,才会创建Bean。
- @ConditionalOnProperty:当配置文件中存在指定的属性时,才会加载配置类。
- 这些条件注解确保了只有在满足特定条件时,相关的配置才会生效,从而提供了灵活性和定制性。
自动配置的实现:当Spring Boot应用启动时,自动配置过程开始。Spring Boot会根据类路径下的所有jar包和配置文件,自动配置出适合当前应用的最佳配置。
如果用户提供了自定义配置,那么自动配置将会退位,使用用户的自定义配置。