1. DESC
Spring对beanFactory的处理
2. CODE
![](https://img.haomeiwen.com/i12602166/7a42735492ec5f3b.png)
3. 从上往下RUSH
3.1 prepareRefresh()
![](https://img.haomeiwen.com/i12602166/8190b1c80f861150.png)
3.2 obtainFreshBeanFactory()
加载NameSpacehandler
使用各个NameSpcaceHandler生成Beandifinitions并注册到beanfactory里面去
3.2.1 加载NameSpaceHandler
NameSpaceHandler加载过程的解析已经写过就不再写了; 参看前面的文章
3.2.2 NameSpaceHandler处理生成bean的定义(注意只是生成beanDefinition而不是生成具体的bean而且相关的Class文件也没有加载)
NamespaceHandlerSupport
![](https://img.haomeiwen.com/i12602166/d2ece72708ca49be.png)
1 ComponentScanBeanDefinitionParser 这是个样板例子,一看就知道怎么回事
![](https://img.haomeiwen.com/i12602166/476346772a82c428.png)
3.3 prepareBeanFactory(beanFactory)
主要是完成BeanFactoryPostProcessors的初始化
![](https://img.haomeiwen.com/i12602166/d2dee15fb767d07e.png)
3.4 invokeBeanFactoryPostProcessors(beanFactory) 执行BeanFactoryPostProcessors,
对BeanFactory启动处理流程
![](https://img.haomeiwen.com/i12602166/8110579301e7ecab.png)
某vip视频:现在免费分享 具体看图下方文字
![](https://img.haomeiwen.com/i12602166/e88e052ce0d96d7f.png)
3.5 后面的几个方法感觉不用写了
就是bean的初始化什么的了;
其实想抓下Transactional的实现代码的;(这个有点不太明白和JVM redifineClass是怎么对活动栈帧进行方法栈的替换)
但我对AspectJ实在不熟,先放弃吧.等我点了ApsectJ的科技树再回来补充;
4. 总结整体流程
![](https://img.haomeiwen.com/i12602166/dff11b2887fe38a9.png)
![](https://img.haomeiwen.com/i12602166/6ea0a1b430d729c5.png)
![](https://img.haomeiwen.com/i12602166/bf4c43a7584a99e5.png)
![](https://img.haomeiwen.com/i12602166/15782cf62dd2b623.png)
![](https://img.haomeiwen.com/i12602166/d88b32cb3f453bd3.png)
![](https://img.haomeiwen.com/i12602166/30f5af94df562479.png)
![](https://img.haomeiwen.com/i12602166/cd07b41700f09903.png)
![](https://img.haomeiwen.com/i12602166/776bc89da2bbb433.png)
网友评论