Spring Cache
什么是Spring Cache?
??Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Caffeine、Guava Cache、Ehcache
??Spring Cache并不是缓存的实现,而是缓存使用的一种方式,其基于注解和Spring高级特性提供缓存读写以及失效刷新等各种能力
?Spring Cache实现:
??在 Spring 3.1 中引入了多 Cache 的支持,在 spring-context 包中定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 两个接口来统一不同的缓存技术。
??Cache 接口包含缓存的常用操作:增加、删除、读取等。CacheManager 是 Spring 各种缓存的抽象接口。
??Spring 支持的常用 CacheManager 如下:
??| CaffeineCacheManager | 使用 Caffeine 作为缓存 |
| CompositeCacheManager | 用于组合 CacheManager,可以从多个 CacheManager 中轮询得到相应的缓存 |
| ConcurrentMapCacheManager |
默认,使用 java.util.ConcurrentHashMap 来实现缓存 private final ConcurrentMap |
| EhCacheCacheManager | |
| JCacheCacheManager | |
| NoOpCacheManager | 仅测试用,不会实际存储缓存 |
| RedisCacheManager | 使用Redis作为缓存 |
| SimpleCacheManager |
使用简单的 Collection 来缓存 private Collection<? extends Cache> caches = Collections.emptySet(); |
??@CachePut: ????触发缓存更新的方法上,与 Cacheable 相比,该注解的方法始终都会被执行,并且使用方法返回的结果去更新缓存,适用于 insert 和 update 行为的方法上。
??@CacheEvict: ????触发缓存失效,删除缓存项或者清空缓存,适用于 delete 方法上。
除此之外,抽象的 CacheManager 既能集成基于本地内存的单体应用,也能集成 EhCache、Redis 等缓存服务器 ??默认的缓存实现是ConcurrentMapCache ??@CacheConfig ????当我们需要缓存的地方越来越多,你可以使用@CacheConfig(cacheNames = {"cacheName"})注解在 class 之上来统一指定value的值,这时可省略value,如果你在你的方法依旧写上了value,那么依然以方法的value值为准 ????
END.