码迷,mamicode.com
首页 > 编程语言 > 详细

spring-aop总结 spring创建bean时合适进行代理增强

时间:2021-02-25 12:06:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:singleton   bst   str   actor   nfa   roc   包装   proc   font   

 

以下是自己的理解,如不对请不吝赐教谢谢,勿喷

普通的bean创建

  跟下面的创建过程一样,如某个bean被aop增强了,在实例化完之后会调用AbstractAutoProxyCreator.postProcessAfterInitialization方法,这个方法就会返回被增强后的a的代理对象 然后放入一级缓存

针对循环依赖来说

a->b

b->a

调用docreateBean方法创建bean a实例完之后,会把未注入和初始化的bean放入三级缓存中也就是singletonFactorys中,接下来会进行依赖注入 这时发生循环依赖的话

会去创建b对象,b对象实例化之后 进行依赖注入发现依赖a,这时去三级缓存中找到了a被包装成objecFactory的早期实例,就去调用a的objectFactory的getObject方法, 如果

a被aop增强了,这时b应该持有a被增强后的代理对象,spring是怎么处理的呢?

如果a被aop增强了,那么就是AbstractAutoProxyCreator的子类,就会调用后处理器的postProcessAfterInitialization方法,这个方法就会返回被增强后的a的代理对象.然后b继续依赖注入

初始化完放入一级缓存a继续进行注入....

 

spring-aop总结 spring创建bean时合适进行代理增强

标签:singleton   bst   str   actor   nfa   roc   包装   proc   font   

原文地址:https://www.cnblogs.com/isnotnull/p/14443919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!