Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AOP,如何仅在直接从包X发出时拦截对给定类的调用_Java_Spring_Aop_Spring Aop - Fatal编程技术网

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+.*(..)

我听到铃声,但你不知道(不知道)它在哪里