springboot缓存
文章平均质量分 59
miheal_near
这个作者很懒,什么都没留下…
展开
-
@CacheEvict 多参数如何匹配删除
如果@Cacheable(“XXX”)Object getXXX(String a, String b, String c);spring的缓存使用的key是ESPL表达式,然后翻看源码key默认用的生成方式是org.springframework.cache.interceptor.SimpleKeyGenerator大于1个参数走的是最后一个方法 /** * Generate a key based on the specified parameters. */ public stat原创 2021-03-04 17:25:13 · 1395 阅读 · 1 评论 -
SpringBoot中@CacheEvict 不生效
@CacheEvict必须作用在走代理的方法上,并且必须直接调用,间接调用的方法也无效。必须直接调用case A部分的代码,B和C都不会执行清除动作public interface itf{ void test();}@Servicepublic class itfimpl implements itf { //case A @Override @CacheEvict(value = {"xxx"}, allEntries = true) public void test(){转载 2021-03-04 14:15:42 · 3214 阅读 · 1 评论 -
sprintboot使用spring-security包,缓存内存与redis共存
项目修改需求描述项目需要使用分布式缓存机制,但是使用@Cacheable原始仅配置了内存版的,故此次需要改成redis用以支持多应用模式的。项目中如果直接改成redis的,存在一个问题。如果内存对象同一类,比如都是String的list对象,存的key值又都是"code",会把缓存给冲掉,所以需要对redis的做后缀处理。又因为只有一个redis服务器,所以需要对缓存做项目的前缀处理。还希望能支持历史项目,所以顺便就做了CacheManager处理。......原创 2021-01-25 20:30:02 · 898 阅读 · 0 评论