在SpringBoot中定义的配置类加上@EnableAutoConfiguration注解,就会自动装配加载spring.factory中定义的配置类。 @EnableAutoConfiguration注解的原理是使用@Import导入一个ImportSelector实现类,该实现类处理引入spring.factory中的配置类,具体的源码可以查看AutoConfigurationImportSelector 备注:@Import注解是Spring引入外部类的一种实现方式,其可以引入如下三种外部类: ImportSelector实现类 一个普通的class对象(使用@Configuration标注) ImportBeanDefinitionRegistrar实现类 具体引入的源码在ConfigurationClassPostProcessor中,这个类是一个BeanFactoryProcessor,也就意味着它在加载spring的bean xml文件之后执行,在spring bean实例化前执行。所以如果同时配置spring.xml的bean文件和基于SpringBoot的自动配置。后者不会被引入,因为BeanFactroy中已有该bean定义。
在SpringBoot中定义的配置类加上@EnableAutoConfiguration注解,就会自动装配加载spring.factory中定义的配置类。 @EnableAutoConfiguration注解的原理是使用@Import导入一个ImportSelector实现类,该实现类处理引入spring.factory中的配置类,具体的源码可以查看AutoConfigurationImportSelector
备注:@Import注解是Spring引入外部类的一种实现方式,其可以引入如下三种外部类:
具体引入的源码在ConfigurationClassPostProcessor中,这个类是一个BeanFactoryProcessor,也就意味着它在加载spring的bean xml文件之后执行,在spring bean实例化前执行。所以如果同时配置spring.xml的bean文件和基于SpringBoot的自动配置。后者不会被引入,因为BeanFactroy中已有该bean定义。