演示了错误案例:同X类的两个方法 a( ) , b( ) :
方法 a( ) 用 @Cacheable 来注释,而 b( ) 方法调用了 a( ) 方法,而 b() 方法本身没有用 @Cacheable 注释。在调用端调用 b 方法,发现没有生效缓存。
问题原因:b() 方法调用的是 this.a() 方法,而不是被代理后的 a() 方法,我们的目的是要调用被代理后的 a() 方法!
解决方法(1):ApplicationContextHolder.getContext().getBean(xx.class);
得到的返回 就是X类型被代理后的代理类型 Xproxy。
然后改写 b() 方法,要使用 Xproxy.a() 即可以访问 X类被代理后的类型的对应方法。
解决方法(2):不要在这个X类内部调用 a() ,而是要在另1个方法Y类内部里实现 b() ,这样就会直接走 proxy 而不是走 this 方法

内部方法调用
内部调用 ... 解决方法