访问Spring bean代理参考本身

时间:2019-02-21 06:36:36

标签: java spring spring-boot aop spring-aop

我在使用@Cacheable@CacheEviction注释时遇到了问题。当我在声明它们的bean中调用这些方法时,aop部分没有得到执行。

造成这种情况的根本原因是bean可以访问自己的实例本身,而不是访问spring代理。

我已经读过this question,据说在大多数情况下,并不需要bean访问代理。

这些答案可能对我有用。问题是:

还有其他方法可以使带注释的方法起作用吗?还是听起来像我找到了需要访问代理本身的Bean的充分理由?

1 个答案:

答案 0 :(得分:1)

这个问题已经被问过了几十遍了。

如Spring用户手册中所述,自调用不能与Spring AOP一起使用,因为Spring AOP使用代理。因此,如果要使自调用触发一个方面,请切换为完整的AspectJ via LTW (load-time weaving)。它可以与原始bean一起使用,并且不使用任何代理。