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代理对象注入问题,即无法解决目标对象的自我调用问题。
浙公网安备 33010602011771号