设置@Pointcut的表达式

时间:2018-06-20 12:38:00

标签: spring

我想为类设置注释,当我调用对象的任何方法时,该类要在execute方法之前执行拦截器。

@MyAnn
public class SomeClass {

    public void someMethod1() {}
    public void someMethod2() {}
}

@Aspect
public class SomeInterceptor {

    @Pointcut("execution(@my.package.aop.MyAnn* *.*(..))")
    public void checkMethod() {}

    @Around("checkMethod()")
    public Object method(ProceedingJoinPoint joinPoint) throws Throwable {

    }
}

在@Pointcut(...)中应设置什么表达式,以使我的类的所有方法在执行之前都已处理拦截器?

1 个答案:

答案 0 :(得分:0)

找到了解决方案

@Pointcut("execution(public * *(..))")
private void anyPublicOperation() {}

@Pointcut("within(@my.package.aop.MyAnn *)")
private void withinMyAnn() {}

@Pointcut("anyPublicOperation() && withinMyAnn()")
public void checkMethod() {}

如果有更成功的解决方案,我很乐意在评论中看到