@EnableAutoConfiguration详解
1.Boot内部定义了很多自动配置类,在xxx-autoconfigure.jar包的META-INF spring.factories文件定义
2.Boot自动配置类,实际就是采用了@Configuration+@Bean标记实现了Bean定义
3.在开启@EnableAutoConfiguration标记后,会自动导入AutoConfigurationImportSelector组件,该组件内部调用SpringFactoriesLoader加载autoconfigure.jar包中的spring.factories文件,根据文件定义列表载入各个配置类
4.各个XxxAutoConfiguration配置类会创建相应对象载入Spring容器中,例如DataSource、JdbcTemplate、DispatcherServlet、HandlerMapping、RedisTemplate、MongoTemplate、RestTemplate等
第一让我们先来看看@EnableAutoConfiguration的内部注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";