@zhuanxu
2017-11-23T09:18:47.000000Z
字数 882
阅读 2145
spring-boot
@EnableAutoConfiguration 的作用:从classpath中搜索所有配置文件,将其中key=org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的配置项加载到Spring容器中。
其内部实现的关键点:
1. ImportSelector接口
2. SpringFactoriesLoader 从“META-INF/spring.factories” 中读取key为org.springframework.boot.autoconfigure.EnableAutoConfiguration的值,并将其加载进入容器
3. 读取spring.boot.enableautoconfiguration的值,为true才开启自动配置,默认为true
看一个稍微详细的分析:
class EnableAutoConfigurationImportSelectorselectImports判断"spring.boot.enableautoconfiguration" 是否为true// 获取配置类SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class)根据key读取 "META-INF/spring.factories" 中的value
看一个spring-boot的配置org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,配合Condition能够实现按需加载。
@Configuration@ConditionalOnClass(Gson.class)public class GsonAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic Gson gson() {return new Gson();}}
