Spring aspectj注释切入点

我试图在方法注释上创建一个Aspectj切入点,但我总是以不同的方法失败。 我使用的是aspectj autoproxy(我没有在我的spring环境中配置其他编织)。 我的课程如下所示:

public interface Intf
{
  @SomeAnnotation
  void method1() throws SomeExc;
}

public class Impl implements Intf
{
  @Override
  public void method1() throws SomeExc
  {
    //...
  }
}

@Aspect
public class MyAspect
{
  @AfterThrowing(
    pointcut = "execution(* *(..)) && @annotation(SomeAnnotation)",
    throwing = "error")
  public void afterThrowing(JoinPoint jp, Throwable error)
  {
    System.err.println(error.getMessage());
  }
}

@Component
public class Usage
{
  @Autowired
  Intf intf;

  public void doStuff()
  {
    intf.method1();
  }
}

所以我想知道为什么aspectj不会创建切入点。 我设法使用execution(* *(..) throws SomeExc)它工作,但我仍然想知道我做错了什么。

另外,由于method1是在一个接口中定义的,并且我在实现类中指定了注释,是否有办法使它以这种方式工作? 像交易管理/安全等其他代理机制在春天的其他地方以这种方式工作正确吗? 如果我使用接口代理将指定实现类的切入点创建切入点? (我想不是因为我没有使用cglib)


尝试将@Component添加到MyAspect类

@Component
@Aspect
public class MyAspect {
...

只需标记你的方面方法

@After("@annotation(package.SomeAnnotation)")

看看这一步一步一步的指导

链接地址: http://www.djcxy.com/p/77249.html

上一篇: Spring aspectj annotation pointcut

下一篇: Spring AOP Advice Called Twice