启动器
主程序
META-INF/spring.factories自动配置的核心文件
结论SpringBoot所有自动配置都是在启动的时候扫描并加载:spring.factories所有的自动配置类都在这里面,但不一定生效,要判断条件是否成立,只要导入对应的start,就有对应的启动器了,有了启动器,自动装配就会生效,然后就配置成功。
EnableAutoConfiguration 自动装配相关的Eable注解.开启相关支持,如
自动装配作为Starter的基础,也是SpringBoot的核心SpringBoot的自动装配是基于EnableAutoConfiguration 实现的,先了解一下传统意义的自动装配方式。
首先需要了解一些前置关于注解的知识。3.1 Configuration注解
JavaConfig方式Configuration 注解是JavaConfig形式基于Spring IOC容器配置类使用的一种注解。在启动类里边标注@Configuration 也表示它是一个IOC容器的配置类。
相当于xml配置文件中的context:component-scan ,主要作用是扫描指定路径下标识了需要装配的类,自动装配到IOC容器中
方式一:@Import,直接@Import(MyConfig2.class)
方式二:ImportSelector,动态加载实现ImportSelector接口
方式三:ImportBeanDefinitionRegistrar方式,实现ImportBeanDefinitionRegistrar 接口3.5 深入EnableAutoConfiguration原理
分析AutoConfigurationImportSelector的源码时,会先扫描spring-autoconfiguration-metadata.properties文件,最后在扫描spring.factories对应的类时,会结合前面的元数据进行过滤,为什么要过滤呢? 原因是很多的@Configuration其实是依托于其他的框架来加载的,如果当前的classpath环境下没有相关联的依赖,则意味着这些类没必要进行加载,所以,通过这种条件过滤可以有效的减少@configuration类的数量从而降低SpringBoot的启动时间。4 总结
备注:思路还是不太清晰,后续还需再整理一遍深入理解。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |