通过 AOP 审计带注释 class 的所有 public 方法

Audit trough AOP all public methods of an annotated class

有可能通过 AOP(使用 spring aop、aspectj 等)审计 class 的所有 public 方法,这些方法用 @Service 或 @Repository 或什么注释我曾经认为注释是 class 级别而不是方法级别? 我想要这样的东西:

@Pointcut(value = "execution(public * *(..))")
public void anyPublicMethod() {} 

@Around("anyPublicMethod() && @annotation(Repository)")
public Object doLogTime(ProceedingJoinPoint joinPoint) throws Throwable {
    //do something
}

切入点应该是

execution(public * @my.package.Repository *.*(..))

这与

隐式相同
execution(public * (@my.package.Repository *).*(..))

P.S.: 你从问题中切入的切入点实际上是针对 @Repository 注释的方法,这不是你想要的。