自动装配原理
从Spring的IOC到SpringBoot的自动装配原理
DeferedImportSelector对Bean加载顺序的影响(当然是由@Import导入的)
DeferedImportSelector有一个分组的概念,如果自定义了一个类,实现了Group接口,可以在这里面自定义排序规则。
Group有延迟的特性,还有分组的特性。
扫描读取所有jar包当中的spring.factories文件,将文件中得配置读取到缓存中,为Map结构。
在这个过程,会排除和过滤掉不需要的自动配置类。
排除在EnableAutoConfiguration中可以配置要排除的自动配置类。
过滤则主要通过扫描spring.factories文件,找到对应key为:AutoConfigurationImportFilter,把对应配置了该key的配置类给过滤掉。比如:
比如有:@conditionalOnBean、@conditionalOnClass、@conditionalOnProperty
有时候要求要有相应配置或者项目中有相关类才配加载自动配置。
最后扫描了之后可以在DeferedImportSelector的selectImports()方法中进行排序了。sortAutoConfigurations。
所以也可以自定义一个starter。
启动原理
为什么SpringBoot的jar可以直接运行?
标签:SpringBoot,DeferedImportSelector,配置,过滤,自动,自定义 From: https://www.cnblogs.com/zhf123/p/16945207.html