通过调用bean中的方法来调用代理AOP

时间:2010-08-25 19:47:01

标签: java spring aop spring-aop

让我说我有一个用两种方法'foo'和'goo'调用的bean 并且'goo'标有AOP拦截呼叫。
是否有可能在'foo'中编写任何一段代码,以便不直接调用'goo'方法,而是通过bean的代理包装器来激活它的AOP部分?

public Class Pojo{

  public void foo(){
    //what should I write here in order to activate 'goo' in transactional mode??
  }

  @Transactional
  public void goo(){
  }
}

2 个答案:

答案 0 :(得分:5)

是的,但您需要通过spring代理访问它:

public Class Pojo{

  @Autowired
  private Pojo springProxy;

  public void foo(){
    springProxy.goo();
  }

  @Transactional
  public void goo(){
  }
}

答案 1 :(得分:0)

我无法使用自动连接选项。也许是因为我使用反射从foo()调用goo()(以及任何其他方法)。
所以最终解决我问题的是添加foo()代码来查找Pojo的代理bean类。并在代理bean上使用Sun invokation调用mothd 这也调用了AOP调用。
找不到更好的解决方法。