理解springboot如何自动装配
1.1首先清楚SpringBoot框架的启动注解是@SpringBootApplication,其次再去看该注解包含了哪些注解:
@ComponentScan:没有指定扫描的包,因此默认扫描该类同级的类或者同级包下的类,
@SpringBootConfiguration:其实是个@Configuration
@EnableAutoConfiguration:此注解功能指自动装配(Spring会在classpash下找到所有配置的bean进行配置),
再看AutoConfigurationImportSelector类,它实现了DeferredImportSelector接口,该接口目的是为了导入@Configuration的配置项,而DeferredImportSelector是延期导入,当所有的@Configuration都处理过后才会执行。
而DeferredImportSelector又继承了ImportSelector
最后回头看AutoConfigurationImportSelector中的selectImport方法,
此方法目的:最开始会先判断是否进行自动装配,然后从META-INF/spring-autoconfigure-metadata.properties读取元数据与元数据的相关属性,最后会调用getCandidateConfigurations方法:
这时候我们会看到:SpringFactoryiesLoader, 它会读取META-INF/spring.factories下的EnableAutoConfiguration的配置,紧接着在进行排除与过滤,进而得到需要装配的类。最后让所有配置在META-INF/spring.factories下的AutoConfigurationImportListener执行AutoConfigurationImportEvent事件
能帮助到大家哪怕一点都是我的荣幸!有描述不恰当的地方还请大家指明!一起进步!!!