1.Spring AOP 代理类:ProxyFactory
待补充
2.代理何时被注入
在bean初始化过程中,代理可以被AbstractAutoProxyCreator(实现了SmartInstantiationAwareBeanPostProcessor接口)的子类在2个地方被创建:
- postProcessBeforeInstantiation 实例化前,一般用于存在TargetSourceCreator时,由TargetSourceCreator创建TargetSource。创建代理后,直接返回代理Bean,不需要进行Bean的属性注入和后置方法处理。
- postProcessAfterInitialization Bean在属性注入和初始化后,生成代理Bean。Spring中大部分代理是通过该方式生成的。
3.postProcessAfterInitialization源码流程解析
1. 判断是否为earlyProxyReferences
![](https://img.haomeiwen.com/i13720452/646ae1a3984daf43.png)
2. wrapIfNecessary是否需要代理Bean
![](https://img.haomeiwen.com/i13720452/f9bba244cefb21db.png)
3. getAdvicesAndAdvisorsForBean 获取适用的Advisior
![](https://img.haomeiwen.com/i13720452/defc820b4e0538fe.png)
4. 查找所有advisor
![](https://img.haomeiwen.com/i13720452/c28a582f23b8be2c.png)
5. 查找EligibleAdvisors
![](https://img.haomeiwen.com/i13720452/810430dce63b8ba7.png)
6. 总结
- 判断bean是否需要代理
- 查找所有advisior
- 查找Eligible advisor
- 调用proxyFactory创建代理
网友评论