Java AOP,如何仅在直接从包X发出时拦截对给定类的调用
我想截获对某个对象的所有调用:Java AOP,如何仅在直接从包X发出时拦截对给定类的调用,java,spring,aop,spring-aop,Java,Spring,Aop,Spring Aop,我想截获对某个对象的所有调用:org.springframework.data.redis.core.StringRedisTemplace(例如save();delete();),但仅当这些调用是直接从我的公司中的一个软件包com.mycompany.,当第三方库或spring/data/redis本身使用StringRedisTemplace的实例时,情况并非如此 是否有一种方法可以通过AOP注释(如@Pointcut@Around等)实现这一点。我的搜索/尝试没有成功 因此,一句话=>如何
org.springframework.data.redis.core.StringRedisTemplace
(例如save();
delete();
),但仅当这些调用是直接从我的公司中的一个软件包com.mycompany.
,当第三方库或spring/data/redis本身使用StringRedisTemplace
的实例时,情况并非如此
是否有一种方法可以通过AOP注释(如@Pointcut
@Around
等)实现这一点。我的搜索/尝试没有成功
因此,一句话=>如何拦截/插入对某个类的所有实例的所有调用,只要这些实例是在我的公司软件包中实例化和使用的。好吧,你几乎是自己说的: 但只有当电话直接从我的公司的一个多包内发出时,才能使用。
com.mycompany.*
您需要的切入点类型实际上在中命名为。在完整的AspectJ中有一个名为withincode
,但基于代理的SpringAOP只支持前者,不支持后者。对于后者,您必须在Spring中通过LTW使用完整的AspectJ。所有内容都在Spring手册中进行了解释
您要做的是这样的:
在(com.mycompany..*)和&call(org.springframework.data.redis.core.StringRedisTemplate+.*(..)
我听到铃声,但你不知道(不知道)它在哪里