Spring事务处理时自我调用的解决方案及一些实现方式的风险

【3.1 通过ThreadLocal暴露Aop代理对象】

适合解决所有场景(不管是singleton Bean还是prototype Bean)的AOP代理获取问题(即能解决目标对象的自我调用问题);

AopContext.currentProxy()

  

【3.2 通过初始化方法在目标对象中注入代理对象】 和【3.4 改进版的InjectBeanSelfProcessor的解决方案】

能解决普通(无循环依赖)的AOP代理对象注入问题,

而且也能解决【3.3】中提到的循环依赖(应该是singleton之间的循环依赖)造成的目标对象无法注入AOP代理对象问题,

但该解决方案不适合解决循环依赖中包含prototype Bean的自我调用问题

 

【3.3 通过BeanPostProcessor 在目标对象中注入代理对象】

只能解决 普通(无循环依赖)的 的Bean注入AOP代理,

无法解决循环依赖的AOP代理对象注入问题,即无法解决目标对象的自我调用问题

 

http://blog.csdn.net/u012528360/article/details/70336319

posted on 2017-12-22 21:45  HB1  阅读(357)  评论(0)    收藏  举报

导航