转载

Spring缓存抽象

1、基本概念

CacheManager:缓存管理器

Cache:缓存的实现

@Cacheable:缓存注解,一般标注在service层方法上,在方法执行前调用,查询缓存是否存在,不存在执行方法,并将返回结果保存在指定的缓存

@CachePut:缓存更新注解,在方法执行结束后调用,将返回结果更新到缓存

@CacheEvict:缓存删除注解,默认在方法执行后调用,删除指定缓存

@Caching:用于同时添加多个缓存注解,定义复杂的缓存注解

@CacheConfig:在类上添加,给类中的所有缓存注解方法添加缓存的公共配置

1、自动配置类:CacheAutoConfiguration

2、缓存配置类

  • 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

3、默认采用的配置类

Spring缓存抽象

4、SimpleCacheConfiguration

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

2、简单使用

1、在启动类上增加注解:@EnableCaching

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

注解常见属性

  • @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:
原文  https://segmentfault.com/a/1190000022097599
正文到此结束
Loading...