@zhuanxu
2017-11-23T17:18:47.000000Z
字数 882
阅读 1891
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 EnableAutoConfigurationImportSelector
selectImports
判断"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
@ConditionalOnMissingBean
public Gson gson() {
return new Gson();
}
}