如果在一个类中存在A、B两个方法,A方法使用了@Cacheable注解,B方法调用A方法的时候该注解不会生效,原因是Spring使用@Cacheable创建缓存是基于AOP实现的,即Java的动态代理机制,解决方案:
1、使用Ehcache 的 CacheManger创建缓存
2、将A、B两个方法分别放到不同的类中。
如果一个类实现了一个接口,在类中的某个方法上使用@Cacheable注解,那么该方法应该是重写的接口中的抽象方法;
如果一个类并没有实现接口,那么想在某个方法上使用@Cacheable注解,只需要该方法为public即可。