@SpringbootApplication注解是一个复合注解
-
@SpringBootConfiguration
-
@EnableAutoConfiguration
-
@ComponentScane
其中@EnableAutoConfiguration是实现自动化配置的核心注解。该注解通过@Import注解导入对应的配置选择器
@Import(AutoConfigurationImportSelector.class)
如下:
该选择器内部是读取了 该项目和该项目引用的JAR包的classpath路径下的META-INF/spring.factories文件中所配置的类的全类名。但这些配置类并不会全部导入到Spring容器中,而是根据其内部的条件如@ConditionalOnClass此类注解来决定。
样例:对于这个Redis的配置类,用@ConditionalOnClass注解判断字节码是否存在,而这个字节码只会在导入Redis相关起步依赖之后才会存在。即 依赖导入后这个配置类就会被Spring加载,从而实现自动配置。使用@ConditionalOnMissingBean注解来避免重复导入