【问题标题】:Invoke proxy AOP by calling method within the bean通过调用 bean 中的方法来调用代理 AOP
【发布时间】:2010-08-25 19:47:00
【问题描述】:

假设我有一个 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(){
  }
}

【问题讨论】:

    标签: java spring aop spring-aop


    【解决方案1】:

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

    public Class Pojo{
    
      @Autowired
      private Pojo springProxy;
    
      public void foo(){
        springProxy.goo();
      }
    
      @Transactional
      public void goo(){
      }
    }
    

    【讨论】:

    • 感谢您的快速回复。让我检查一下,我会回复你的。我需要检查如何使用 invoke() 来使用它,所以我会有一个通用的解决方案
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多