包装内 com.repository 我有:
- 扩展 spring data Repository 的独立接口(interface)
- 在同一个包中使用我自己的实现扩展 spring data Repository 的接口(interface)
- 实现我的存储库接口(interface)的存储库类
我想测量 com.repository 包中所有方法的执行时间(与数据库的通信)。 但我想避免重复
现在
@Pointcut("执行(public * com.repository..(..))")
我有一些方法记录了两次 - 来自接口(interface)和实现该接口(interface)的类。我不想记录在同一包中实现类的接口(interface)中的方法,或者不记录在同一包中实现接口(interface)的类中的方法。
如何用切入点和建议来表达它?
我的问题与 AspectJ : Issue when combining multiple pointcuts in @Around advice 有点相关,但这并不能解决我的问题。
最佳答案
如果您正在监视的对象位于特定包,为什么您不将切入点仅绑定(bind)到该包。
所以使用
@Pointcut("execution(* com.repository.*.*(..))")
而不是
@Pointcut("execution(public * com.repository..*.*(..))")
其中包括“com.repository”包及其所有子包。
关于java - 避免 AOP 中重叠的切入点和切面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180049/