3

假设我有一个 bean 调用了两个方法 'foo' 和 'goo' 和 '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(){
  }
}
4

2 回答 2

5

可以,但是需要通过spring代理访问:

public Class Pojo{

  @Autowired
  private Pojo springProxy;

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

  @Transactional
  public void goo(){
  }
}
于 2010-08-25T19:50:02.093 回答
0

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

于 2010-08-30T12:34:39.610 回答