Spring缓存抽象

一、基本概念

CacheManager:缓存管理器
Cache:缓存的实现
@Cacheable:缓存注解,通常标注在service层方法上,在方法执行前调用,查询缓存是否存在,不存在执行方法,并将返回结果保存在指定的缓存
@CachePut:缓存更新注解,在方法执行结束后调用,将返回结果更新到缓存
@CacheEvict:缓存删除注解,默认在方法执行后调用,删除指定缓存
@Caching:用于同时添加多个缓存注解,定义复杂的缓存注解
@CacheConfig:在类上添加,给类中的全部缓存注解方法添加缓存的公共配置spring

一、自动配置类:CacheAutoConfiguration

二、缓存配置类

  • org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration
  • org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration

三、默认采用的配置类

image.png

四、SimpleCacheConfiguration

给容器中注入了一个CacheManager:ConcurrentMapCacheManager缓存

二、简单使用

一、在启动类上增长注解:@EnableCaching

二、在对应方法上标注注解

注解常见属性less

  • @Cacheable
cacheNames/value:指定缓存名字
key:指定缓存数据使用的key(SPEL指定),不指定时默认为方法实参
keyGenerator:指定key生成器组件id
cacheManager:指定缓存管理器
cacheResolver:
condition:条件知足才缓存
unless:条件知足不缓存
sync:是否使用异步模式,使用异步模式时不支持unless,默认为false
  • @CachePut
cacheNames/value:指定缓存名字
key:指定缓存数据使用的key(SPEL指定),不指定时默认为方法实参
keyGenerator:指定key生成器组件id
cacheManager:指定缓存管理器
cacheResolver:
condition:条件知足才缓存
unless:条件知足不缓存
  • @CacheEvict
cacheNames/value:指定缓存名字
key:指定缓存数据使用的key(SPEL指定),不指定时默认为方法实参
keyGenerator:指定key生成器组件id
cacheManager:指定缓存管理器
cacheResolver:
condition:条件知足才缓存
unless:条件知足不缓存
allEntries:是否删除指定缓存中的全部数据,默认为false
beforeInvocation:是否在方法调用前执行缓存删除,默认为false
  • @CacheConfig
cacheNames:指定缓存名字
keyGenerator:指定key生成器组件id
cacheManager:指定缓存管理器
cacheResolver:
相关文章
相关标签/搜索