我想拦截对某个对象的所有调用:org.springframework.data.redis.core.StringRedisTemplace
(例如save();
delete();
)但是只有当我的公司内部直接调用许多包时com.mycompany.*
,而不是第三方库或spring / data / redis本身使用StringRedisTemplace
的实例时。
有没有办法用@Pointcut
@Around
等AOP注释做到这一点。我的搜索/尝试都没有成功。
所以用一个词=>如果在我的公司包中实例化并使用这些实例,如何拦截/检测对某个类的所有实例的所有调用。
答案 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+.*(..))