数据缓存之Cache规范JSR107

  JSR是Java Specification Requests 的缩写 ,Java规范请求——提交Java规范。 JSR-107就是关于如何使用缓存的规范,是java提供的一个接口规范,类似于JDBC规范,没有具体的实 现,具体的实现就是reids等这些缓存技术。
  JSR-107相关内容:Java CachingJSR-107)定义了5个核心接口,分别是CachingProviderCacheManager、CacheEntryExpiry,其具体功能如下:

    CachingProvider(缓存提供者):创建、配置、获取、管理和控制多个CacheManager。

    CacheManager(缓存管理器):创建、配置、获取、管理和控制多个唯一命名的Cache。

    Cache(缓存):是由CacheManager管理的,CacheManager管理Cache的生命周期,其存在于CacheManager的上下文中,是一个类似map的数据结构,并临时存储以key为索引的值。Cache与CacheManager一一对应。

    Entry(缓存键值对):是一个存储在Cache中的key-value对。

    Expiry(缓存失效):每一个存储在Cache中的条目都有一个定义的有效期。一旦超过这个时间,条目就自动过期;过期后,条目将不可以访问、更新和删除操作。缓存有效期可以通过ExpiryPolicy设置。

  其关系图如下:
                

 

  在 数据访问 MyBatis中有涉及缓存的文章(MyBatis功能点之一(1):MyBatis缓存初体验MyBatis功能点之一(2):二级缓存cacheMyBatis功能点一应用:二级缓存整合redis),MyBatis中的缓存是否符合这个标准呢?

  其能整合redis姑且猜测其符合这个标准。参考MyBatis功能点之一(补充):MyBatis缓存Cache包及下图

                

  可知其符合JSR-107。

  除了MyBatis,Spring提供了org.springframework.cache.Cacheorg.springframework.cache.CacheManager接口来统一不同的缓存技术并支持使用JavaCaching注解简化缓存开发。其中,CacheManager是Spring提供的各种互斥技术抽象接口;Cache接口包含缓存的各种操作(增、删、获取缓存等), Cache 只负责维护抽象层,具体的实现由自己的技术选型来决定——进而将缓存管理和缓存技术解除耦合。

  1、Spring内置的CacheManager,针对不同的缓存技术需要不同的CacheManager:

                

  2、Spring内置的Cache:

                 

   Spring提供Java Cache注解简化开发,即支持声明式缓存注解(又是一个使用注解式AOP的生动例子)。具体如下:

                

 

posted on 2021-11-25 19:49  池塘里洗澡的鸭子  阅读(36)  评论(0编辑  收藏  举报