0

我对 Spring AOP 很不满意。我正在尝试使用方面触发一个方法,但是将触发方面的方法也是同一个类的方法并且方面不起作用(顺便说一句没有错误)。像这样

class A extends Runnable{
  public void write(){
      System.out.println('Hi');
  }

   public void run(){
       this.write();
   }

}

<aop:after-returning  method="anyMethod" pointcut="execution(* A.write(..))"/>

任何想法将不胜感激

谢谢

4

3 回答 3

1

在不同的线程中调用建议的方法这一事实没有任何区别。只需确保您传递给线程的实例是由 spring 应用程序上下文创建的,而不是由您的应用程序代码创建的。

此外,由于您建议的是在类中声明的方法,而不是接口——write()您需要执行加载时编织(并且在您的类路径中有 cglib)。

于 2012-01-06T09:46:17.837 回答
0
于 2015-06-22T10:43:12.243 回答
0

正如Abhishek Chauhan所说,Spring AOP 是基于代理的,因此无法拦截对this.someMethod(). 但好消息是,您还可以通过加载时编织在 Spring 应用程序中使用成熟的 AspectJ,如Spring 手册中所述。这样您就可以摆脱限制甚至整个代理开销,因为 AspectJ 不需要任何代理。

于 2015-06-27T17:13:40.847 回答