1、基本概念
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、默认采用的配置类
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缓存抽象