2010年12月4日

在sping中获取自身的代理

假设有这么一个类

public class A{
  func1(){}
  func2(){}
}

func1加了事务的aop,并且func2需要通过proxy来调用func1,那func2如何拿到A的proxy呢?

一个办法是实现BeanFactoryAware接口,另一个办法就是这样

A self = this;  
 try {  
     A proxy = (A) AopContext.currentProxy();  
     if (proxy != null) {  
         self = proxy;  
     }  
 } catch (IllegalStateException e) {  
     e.printStackTrace();  
 }  

然后在bean的配置中加上 <property name="exposeProxy" value="true" />

这个方法和第一种办法比起来,和spring的耦合少一点。