避免 AOP 中重叠的切入点和切面

在 com.repository 包中我有:

  1. 扩展 spring data Repository 的独立接口

  2. 在同一个包中使用我自己的实现扩展 spring data Repository 的接口

  3. 实现我的存储库接口的存储库类

我想测量 com.repository 包中所有方法的执行时间(与数据库的通信)。但我想避免重复

现在与

@Pointcut("执行(public * com.repository. . (..))")

我有一些方法记录了两次 - 来自接口和实现该接口的类。我不想记录在同一包中实现类的接口中的方法,或者不记录在同一包中实现接口的类中的方法。

我该如何用切入点和建议来表达它?

我的问题与 AspectJ 有点相关:在 @Around 建议中组合多个切入点时出现问题,但它并不能解决我的问题。


Qyouu
浏览 66回答 1
1回答

达令说

如果您正在监视的对象位于特定包,为什么您不将切入点仅绑定到该包。所以使用@Pointcut("execution(* com.repository.*.*(..))")代替@Pointcut("execution(public * com.repository..*.*(..))")其中包括“com.repository”包及其所有子包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java