我使用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");
}
答案 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) {