一、什么是自动配置 bean
自动配置类通过添加 @AutoConfiguration 注解实现。
因为 @AutoConfiguration 注解本身是以 @Configuration 注解的,所以自动配置类可以算是一个标准的基于 @Configuration 注解的类。
@Conditional 注解可以用于声明自动配置启用条件,通常,我们可以使用 @ConditionalOnClass、@ConditionalOnMissingBean 注解。
二、自动配置发现
Spring Boot 通过检查【META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports】配置文件获取自动配置类。文件内包含自定义的自动配置类全限定名,每行一个。
@SpringBootApplication注解中已经包含了@EnableAutoConfiguration注解,通过@EnableAutoConfiguration注解中的@Import(AutoConfigurationImportSelector.class)可以查看到
三、对比
@ComponentScan: 注解的作用是扫描@SpringBootApplication所在的Application类(即spring-boot项目的入口类)所在的包(basepackage)下所有的@component注解(或拓展了@component的注解)标记的bean,并注册到spring容器中。
@EnableAutoConfiguration: 注解加载的是资源目录META-INF文件下的spring.factories的文件。包括导入到项目中的Jar包的META-INF文件夹下的spring.factories文件。spring.factories文件是一个properties文件。
四、作用
如果项目中要开发一个比较通用的组件,这个组件要被其它springboot项目应用,并且其它springboot项目在应用它时不想要加入新的标注和代码,只要在pom.xml里加入它的依赖就好。