详解Spring数据缓存注解@Cacheable、CachePut、@CacheEvict,@Caching,@CacheConfig的使用要点
本文不对spring缓存原理机制进行阐述,详情可参见官方文档.仅介绍注解的参数含义及使用,供使用时参阅.
作用:设置在类级别缓存相关的一些配置,如:缓存名称,缓存管理器等
@CacheConfig(cacheNames = "oneCache")
1.作用:有缓存直接读取缓存不调用方法,无缓存则调用方法,在满足条件情况下将结果缓存,供下次调用读取
2.可设置属性说明
(value = "",cacheNames = "",key = "",keyGenerator = "",cacheManager = "",cacheResolver = "",condition = "",unless = "",sync = true)
value|cacheNames:这2个都是设置缓存的名称,若在类级别设置过名称,可省略
key:缓存的key值,以区分相同名称下的不同缓存.默认为方法名+参数,内容应遵循SpEL语言格式,与keyGenerator互斥
keyGenerator:是指定 key 生成器,非必需,若需要指定一个自定义的 key 生成器,需要去实现 KeyGenerator 接口
cacheManager:设置缓存管理器,可不设置,使用默认缓存管理器,与cacheResolver互斥
cacheResolver:为cacheManager的简配版,互斥
condition:条件判断器,遵循SpEL语言格式,将符合条件的缓存,不符合的不缓存。
unless:条件判断器,遵循SpEL语言格式,将符合条件的不缓存,不符合的缓存。
sync:同步缓存设置,用于多线程环境中,一个线程忙于计算值,而其他线程被阻塞,直到条目在缓存中更新,在使用时请检查你的缓存库是否支持
1.作用:有缓存直接读取缓存不调用方法,无缓存则调用方法,在满足条件情况下将结果缓存,供下次调用读取
2.可设置属性说明
(value = "",cacheNames = "",key = "",keyGenerator = "",cacheManager = "",cacheResolver = "",condition = "",allEntries = true,beforeInvocation = true)
与Cacheable相同属性一致
allEntries:是否删除同缓存名称下的所有缓存,默认false只删除本key,true全删除,注意设置为true时不能设置key
beforeInvocation:是执行这个方法之前执行清除缓存的操作。
1.作用:更新缓存,不管之前有无缓存都要调用方法,在满足条件情况下将结果缓存更新,供下次Cacheable调用读取
2.可设置属性说明
(value = "",cacheNames = "",key = "",keyGenerator = "",cacheManager = "",cacheResolver = "",condition = "",unless = "")
与Cacheable相同属性一致
作用:可以设置多个不同类型的注解
@Caching (put = {
@CachePut(key = "'one'+#p1"),
@CachePut(key = "'two'+#p0")
})