@CacheEvict(value =“test”, allEntries = true)
1、使用@CacheEvict注解的方法必须是controller层直接调用,service里间接调用不生效。
2、原因是因为key值跟你查询方法的key值不统一,所以导致缓存并没有清除
3、把@CacheEvict的方法和@Cache的方法放到一个java文件中写,他俩在两个java文件的话,会导致@CacheEvict失效。
4、返回值必须设置为void
5、@CacheEvict必须作用在走代理的方法上(这一条不理解可以去查阅一下Spring AOP内部方法调用代理问题)
在使用Spring @CacheEvict注解的时候,要注意,如果类A的方法f1()被标注了 @CacheEvict注解,那么当类A的其他方法,例如:f2(),去直接调用f1()的时候, @CacheEvict是不起作用的,原因是 @CacheEvict是基于Spring AOP代理类,f2()属于内部方法,直接调用f1()时,是不走代理的。
spring全家桶中@CacheEvict无效情况
最新推荐文章于 2024-05-03 10:06:59 发布