避免在 AOP 中重叠切入点和方面
Avoid overlaping pointcuts and aspects in AOP
包中
com.repository 我有 :
- 扩展 spring 数据存储库的独立接口
- 在同一包中使用我自己的实现扩展 spring 数据存储库的接口
- 存储库class实现了我的存储库接口
我想测量 com.repository 包(与数据库通信)中所有方法的执行时间。
但我想避免重复
现在
@Pointcut("execution(public * com.repository..(..))")
我有一些方法记录了两次 - 来自接口和 class 实现此接口。我不想记录在同一个包中实现了 class 的接口的方法,或者不记录在同一个包中实现了接口的 classes 的方法。
如何用切入点和通知来表达?
我的问题和AspectJ : Issue when combining multiple pointcuts in @Around advice有点关系,但是没有解决我的问题
如果您要监视的对象位于特定包中,为什么不将切入点仅绑定到该包。
所以使用
@Pointcut("execution(* com.repository.*.*(..))")
而不是
@Pointcut("execution(public * com.repository..*.*(..))")
其中包括 "com.repository" 包及其所有子包。
包中 com.repository 我有 :
- 扩展 spring 数据存储库的独立接口
- 在同一包中使用我自己的实现扩展 spring 数据存储库的接口
- 存储库class实现了我的存储库接口
我想测量 com.repository 包(与数据库通信)中所有方法的执行时间。 但我想避免重复
现在
@Pointcut("execution(public * com.repository..(..))")
我有一些方法记录了两次 - 来自接口和 class 实现此接口。我不想记录在同一个包中实现了 class 的接口的方法,或者不记录在同一个包中实现了接口的 classes 的方法。
如何用切入点和通知来表达?
我的问题和AspectJ : Issue when combining multiple pointcuts in @Around advice有点关系,但是没有解决我的问题
如果您要监视的对象位于特定包中,为什么不将切入点仅绑定到该包。
所以使用
@Pointcut("execution(* com.repository.*.*(..))")
而不是
@Pointcut("execution(public * com.repository..*.*(..))")
其中包括 "com.repository" 包及其所有子包。