SpringBoot与缓存(一) ---JSR107和Spring缓存抽象的基础概念

一. JSR107

JSR107是Java为我们提供的一套缓存规范,它是面向接口编程的,我们想要实现什么功能就去继承相应的接口,并重写对应的方法。不过由于整合的难度较大,现在市面上较少使用,不过后面推出的一些缓存实现机制都是在它基础层面上进行扩展的。所以我们可以了解一下它的基础概念。
Java Caching(JSR107)定义了5个核心接口,分别是CachingProvider, CachManager, Cache, Entry 和 Expiry
[1]CachingProvider定义了创建,配置,获取,管理和控制多个CacherManager。一个应用可以在运行期访问多个CachingProvider
[2]CacheManager定义创建,配置,获取,管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。
[3]Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManger所拥有。
[4]Entry是一个存储在Cache中的key-value对
[5]Expiry每一个存储在Cache中条目有一个定义的有效期。一旦超过这个时间,条目为过期状态。一旦过期,条目将不可访问,更新和删除。缓存有效期可以通过ExpiryPolicy设置
在这里插入图片描述

二. Spring缓存抽象

1.基础概念:
由于JSR在应用的实现上相对繁琐,所以Spring框架自从3.1就开始定义了自己的缓存抽象,它保留了上面的CacheManager和Cache的实现,并对它们进行了很好的封装,是我们的开发难度大大降低。它在底层源码上定义了org.springframework.cache.Cache和org.springframework.cache.cacheManager 接口来统一不同的缓存技术,并支持使用JCache(JSR-107)注释简化我们开发

2.相关的Cache接口
Cache接口为缓存的组件规范定义,包含缓存的各种操作集合
Cache接口下Spring提供了各种xxxCache的实现,如RedisCache,EhCacheCache,ConcurrentMapCahe等
相关的实现图:
从图中我们可以看出我们开发的应用只需要面向CompositeCacheManager(这就是缓存管理器器的集合),它底层有各种实现的缓存管理器,而各种不同的缓存管理器有会各自的缓存实现,便于对我们相应数据的CRUD操作(就像我们使用Redis缓存的时候,它需要有RedisCacheManager,这个管理器在操作我们Redis缓存的时候使用了RedisTemplate模板,我们在开发的时候,只需要了解这个管理器和这个模板的相内容就OK了)
在这里插入图片描述
3.几个重要概念&缓存注解
在这里插入图片描述

发布了58 篇原创文章 · 获赞 2 · 访问量 4465

猜你喜欢

转载自blog.csdn.net/TheWindOfSon/article/details/104545783
今日推荐