AOP,如何仅在直接从包X

时间:2017-12-30 00:08:50

标签: java spring aop spring-aop

我想拦截对某个对象的所有调用:org.springframework.data.redis.core.StringRedisTemplace(例如save(); delete();)但是只有当我的公司内部直接调用许多包时com.mycompany.*,而不是第三方库或spring / data / redis本身使用StringRedisTemplace的实例时。

有没有办法用@Pointcut @Around等AOP注释做到这一点。我的搜索/尝试都没有成功。

所以用一个词=>如果在我的公司包中实例化并使用这些实例,如何拦截/检测对某个类的所有实例的所有调用。

1 个答案:

答案 0 :(得分:1)

嗯,你几乎是自己说的:

  

但是只有在我的公司中的 中直接拨打许多软件包com.mycompany.*

您需要的切入点类型确实命名为within。在完整的AspectJ中有一个名为withincode的相关名称,但基于代理的Spring AOP仅支持前者,而不支持后者。对于后者,您必须在Spring中通过LTW使用完整的AspectJ。一切都在Spring手册AOP chapter中解释。

你想要做的是这样的事情:

within(com.mycompany..*) && call(org.springframework.data.redis.core.StringRedisTemplate+.*(..))