Spring AOP如何与接口方法上的注释相匹配?

时间:2017-09-14 08:49:35

标签: java spring spring-mvc annotations spring-aop

我使用mybatis。我的问题是Spring AOP如何匹配接口方法的注释?因为我想在注释中放入一些参数,然后在afterReturning方法中处理它们。

我的注释:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CacheClear {
    String key() default "";
}

在mapper类中:

@CacheClear
List<BizInst> selectAllBizInsts();

在我的方面:

当使用“执行...”时,它可以正常工作

@AfterReturning("execution(public * com.dao.*.select*(..))")
public void doAfterReturning(){
    System.out.println("after returning");
}

但是当使用“@annotation(...)”时它不起作用

@AfterReturning("@annotation(com.annotation.CacheClear)")
public void doAfterReturning(){
    System.out.println("after returning");
}

1 个答案:

答案 0 :(得分:0)

您可以选择使用CacheClear注释注释的公共dao方法:

@Pointcut("execution(@com.yourPackage.CacheClear * *(..))")
public void methodAnnotatedWithCacheClear( ) {}

@Pointcut("execution(public * com.dao.*.select*(..))")
public void publicDAOMethod() {}

@AfterReturning(pointcut = "methodAnnotatedWithCacheClear() && publicDAOMethod()", returning = "result")
public void doStuff(JoinPoint joinPoint, Object result) {