首页 java spring 缓存注解功能说明 @Cacheable @CacheEvit @CachePut @Caching @CacheConfig

spring 缓存注解功能说明 @Cacheable @CacheEvit @CachePut @Caching @CacheConfig

详解Spring数据缓存注解@Cacheable、CachePut、@CacheEvict,@Caching,@CacheConfig的使用要点

本文不对spring缓存原理机制进行阐述,详情可参见官方文档.仅介绍注解的参数含义及使用,供使用时参阅.

@CacheConfig

作用:设置在类级别缓存相关的一些配置,如:缓存名称,缓存管理器等


@CacheConfig(cacheNames = "oneCache")

@Cacheable

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:同步缓存设置,用于多线程环境中,一个线程忙于计算值,而其他线程被阻塞,直到条目在缓存中更新,在使用时请检查你的缓存库是否支持

@CacheEvit

1.作用:有缓存直接读取缓存不调用方法,无缓存则调用方法,在满足条件情况下将结果缓存,供下次调用读取

2.可设置属性说明


(value = "",cacheNames = "",key = "",keyGenerator = "",cacheManager = "",cacheResolver = "",condition = "",allEntries = true,beforeInvocation = true)

与Cacheable相同属性一致

allEntries:是否删除同缓存名称下的所有缓存,默认false只删除本key,true全删除,注意设置为true时不能设置key

beforeInvocation:是执行这个方法之前执行清除缓存的操作。

@CachePut

1.作用:更新缓存,不管之前有无缓存都要调用方法,在满足条件情况下将结果缓存更新,供下次Cacheable调用读取

2.可设置属性说明


(value = "",cacheNames = "",key = "",keyGenerator = "",cacheManager = "",cacheResolver = "",condition = "",unless = "")

与Cacheable相同属性一致

@Caching

作用:可以设置多个不同类型的注解


@Caching (put = {
        @CachePut(key = "'one'+#p1"),
        @CachePut(key = "'two'+#p0")
})
关注本站微信公众号