spring源码学习导航路线

1.从new 容器开始,进入注意主体的三个 方法

1.this()
2.register(annotatedClasses);
3.refresh()
思路:
– 1.默认的哪个bean ConfigurationClassPostProcessor 在哪里被注册bd的 和 哪里 被实例化放入 父类的singtonMap中的 ,bd的注册对应的工厂是这个嘛??
2.里面有个mergeBean的概念?–是否说一个bean中有依赖其他bean,还有 FactoryBean 默认就是自己加想要创建的bean(&的意思)
3.明确 所有的创建bean的方法好多其实内部都是先调用的getBean()操作的,
ConfigurationClassPostProcessor从第一个内部bean()的创建调用到refresh中xxx后执行调用到getbean 就可以看出来
4.beanPostProcess(beanFactory中的重要属性集合),有两个spirng默认beanPostProcess是啥时候加入工厂中的,还有那外部的实现beanPostProcess接口的 beanPostProcess呢??
–1).-默认的是在进行refresh中的 prepareBeanFactory()中:
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));–非常核心!!
beanFactory.addBeanPostProcessor(new ApplicationListenerDetector(this));

–2).外部直接的那些:
是先通过 ConfigurationClassPostProcessor 扫描 所有的bean bdf注册到map后,执行下面就可以得到自己的
bdf了(其实是外部refresh 执行到//注册beanPostProcessor; registerBeanPostProcessors(beanFactory);)
//从beanDefinitionMap中得到所有的BeanPostProcessor
String[] postProcessorNames = beanFactory.getBeanNamesForType(BeanPostProcessor.class, true, false);

----外部的那些process,先完成其bean的生命周期后,马上加入spring工厂processList上面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.spring到处都是通过this上下文来关联上,入xxcontext, resouceLoder,xxxx其实说的都是一个东西就是容器,所以叫上下文自己的理解哈在这里插入图片描述
3.明确ConfigurationClassPostProcessor(beanFactory接口) 和 后置处理器接口 beanPostProcessor不是同,没有联系的!!

2.明确this()中做到最重要的事情:

1.父类构造中创建了bean工厂DefalutListableBeanFactory
2).传递了容器上下文(核心)给xxx, 3.创建一个读取注解的Bean定义读取器 reader
4)。创建BeanDefinition扫描器–ClassPathBeanDefnitionScanner

5).在第3)时候 注册了默认的7个beandef 注册put入map(含重要的ConfigurationClassPostProcessor)

2…register中做到最重要的事情:
(从方法名都可以看出来,他是来注册bd的主要)
1).注册 自己定义的那些 beandef(bd) 到上下文上(一般就是指定注册appConfig的bd)
2),里面有个解析 类 上面的 通用注解的方法(后面的扫描出其他的bean都会来调用)

3.reshesh():
1).有一步prepareBeanFactory(beanFactory);准备工厂信息重要,里面有
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));

3.明确注册bd 到bdfMap 和注册可以用的 bean到singtonMap 是执行的不同方法!!
1).注册bdfMap:

BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, registry);

2)注册singtonMap:
在这里插入图片描述

发布了29 篇原创文章 · 获赞 0 · 访问量 394

猜你喜欢

转载自blog.csdn.net/qq_39965727/article/details/103941880