AOP方法嵌套调用为何失效和解决方案
最新推荐文章于 2024-08-05 15:01:49 发布
本文探讨了Spring AOP中方法嵌套调用导致代理失效的问题。当通过ApplicationContext获取OrderService实例并调用fun1时,fun2未被代理。原因在于实际执行的OrderService对象并未包含代理逻辑代码,而是在OrderServiceAop中。Spring AOP的动态代理分为JDK和Cglib两种,接口实现会使用JDK,否则用Cglib。在Cglib代理中,如果fun1被声明为final,fun1不会被代理,但fun2会被正确代理。解决方法是通过设置exposeProxy属性为true,使代理对象能在ThreadLocal中获取,从而在fun1内部调用AopContext.currentProxy()来执行fun2。
摘要由CSDN通过智能技术生成