title: SpringBoot2.StartProcess.自动装配
自动装配提纲
这里的主要逻辑其实还是在SpringFrame里面实现
并没有多少特殊的地方
咱们继续进入到AbstarctApplicationContext的refresh方法中去看看
SpringBoot的这一块具体加载BeanDefinetions主要在invokeBeanFactoryPostProcessors该方法中
加载完了之后进行实例化就实现了自动化配置
所以咱们主要看加载BeanDefinetions
并且Spring代码的执行都是一环扣一环,相当的紧凑不会出现两个毫无关联的逻辑放在一个方法里面的情况
自动装配BeanDefinetions
说到自动装配咱们就得看看
invokeBeanFactoryPostProcessors方法
这方法看上去很长其实做的事情很简单大过程其实就做了两步
1.处理Spring.factories中加载进来的process,将ConfigurationClassPostProcessor注册。当然还有一些其他的操作,不过可以先不管那些。
2.使用ConfigurationClassPostProcessor去parse解析注解类
看下具体的代码
//这里是第一步
if (beanFactory instanceof BeanDefinitionRegistry) {
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
List<BeanFactoryPostProcessor> regularPostProcessors = new ArrayList<>();
List<BeanDefinitionRegistryPostProcessor> registryProcessors = new ArrayList<>();
for (BeanFactoryPostProcessor postProcessor : beanFactoryPostProcessors) {
if (postProcessor instanceof BeanDefinitionRegistryPostProcessor) {
BeanDefinitionRegistryPostProcessor registryProcessor =