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

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring缓存抽象

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址