• 概述
  • SimpleCacheManager
  • NoOpCacheManager
  • ConcurrentMapCacheManager
  • CompositeCacheManager

概述

CacheManager是SPI(Service Provider Interface,服务提供程序接口),提供了访问缓存名称和缓存对象的方法,同时也提供了管理缓存、操作缓存和移除缓存的方法。

下面我们来看下SpringCache框架说提供的不同的缓存管理器实现


SimpleCacheManager

通过使用SimpleCacheManager可以配置缓存列表,并利用这些缓存进行相关的操作。

SimpleCacheManager是缓存管理器的简化版本。 我们来看一下下面的配置实例。 对应缓存的定义,我们使用了ConcurrentMapCacheFactoryBean类对ComcurrentMapCache进行实例化,该实例使用了JDK的ConcurrentMap实现。

<!-- (1)添加cache命名空间和schema文件 -->    <!-- (2)开启支持缓存的配置项 --><cache:annotation-driven cache-manager="cacheManager" proxy-target-class="true"/><!-- (3) 配置cacheManger --><bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"p:caches-ref="cacheObjects"></bean><!-- (4)caches集合 --><util:set id="cacheObjects"><bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"p:name="default"/><!-- @Cacheable(cacheNames = "littleArtisan")标注的cache名称 --><bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"p:name="littleArtisan"/></util:set>

NoOpCacheManager

NoOpCacheManager主要用于测试目的,事实上它并不缓存任何数据。 我们来看下该缓存管理器的配置定义,我们没有未该管理器提供缓存列表,因为它仅仅作为测试的目的

<bean id="noOpCacheManager" class="org.springframework.cache.support.NoOpCacheManager"/>

ConcurrentMapCacheManager

ConcurrentMapCacheManager使用了JDK的ConcurrentMap。 它提供了与SimpleCacheManager类似的共鞥,但并不需要像前面那样定义缓存。 该缓存定义如下:

<bean id="concurrentMapCacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>

CompositeCacheManager

CompositeCacheManager能够定义多个缓存管理器。

当在应用程序上下文中声明 <cache:annotation-driven>标记时,它只提供一个缓存管理器,有的时候并不能满足用户的需求,而CompositeCacheManager定义将多个缓存管理器定义组合在一起,从而扩展了该功能。

此外,CompositeCacheManager还提供了一种机制,通过使用fallbackToNoOpCache属性回到NoOpCacheManager.

我们来看下面的的例子: 定义了一个CompositeCacheManager,将一个简单的缓存管理器与HazelCast缓存管理器绑定到一起 。 简单的缓存管理器定义了members缓存,而HazelCast缓存管理器定义了visitors.

<bean id="compositeCacheManager" class="org.springframework.cache.support.CompositeCacheManager"><property name="cacheManagers"><list><!-- SimpleCacheManager --><bean class="org.springframework.cache.support.SimpleCacheManager"><property name="caches"><set><bean id="membes"class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"></bean></set></property></bean><!-- HazelcastCacheManager --><bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager"><constructor-arg ref="hazelcast" /></bean></list></property></bean><hz:hazelcast id="hazelcast"><hz:config><hz:map name="vistors"><hz:map-store enabled="true" class-name="com.sartisan.cache.domain.Vistor"write-delay-seconds="0" /></hz:map></hz:config></hz:hazelcast>

Spring Cache抽象-缓存管理器相关推荐

  1. Spring Cache抽象-缓存注解

    文章目录 概述 Spring缓存的基本原理 @Cacheable :主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 键生成器 带条件的缓存 @Cacheable 注解参数说明 示例-缓存管理 ...

  2. java缓存管理器_使用@EnableCaching的Spring Boot默认缓存管理器

    我在SpringBootApplication中实现了缓存,如下所示 @SpringBootApplication @EnableCaching public class SampleApplicat ...

  3. spring默认缓存管理器_使用Spring的缓存管理器缓存Web内容

    spring默认缓存管理器 在这篇文章中,我想向大家展示如何使用Spring的CacheManager,@ Cacheable和JMX批注来缓存和管理Web内容的缓存的基础知识. 想象一下一个网上商店 ...

  4. Spring 的缓存管理器 CacheManager

    Spring 的缓存管理器 在 spring 项目中提供了CacheManager接口来定义缓存管理器,这样各个不同的缓存就可以实现它来提供管理器的功能了,在spring-boot-starter-d ...

  5. Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)

    概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...

  6. Spring Cache抽象-基于XML的配置声明(基于ConcurrentMap的配置)

    概述 示例 项目结构 数据库表数据Oracle 实体类 服务层 Spring配置文件 单元测试 日志输出 日志分析 示例源码 概述 Spring Cache基于注解的配置 如果不想使用注解或者由于其他 ...

  7. http缓存管理器_小心缓存管理器

    http缓存管理器 如果使用spring和JPA,则很有可能利用ehcache(或其他缓存提供程序). 您可以在两种不同的情况下进行此操作:JPA 2级缓存和spring方法缓存. 配置应用程序时,通 ...

  8. springboot缓存管理器(CacheManager)

    springboot缓存管理器(CacheManager)讲解--超详细!!! 一.引入 ​随着java的慢慢学习,缓存的使用也越来越多.我们使用缓存大多数是通过api的方式来操作,厉害的人也可以自己 ...

  9. Spring Cache抽象-使用Java类注解的方式整合EhCache

    概述 工程结构 源码 概述 Spring Cache抽象-之缓存注解这篇博文中我们介绍了SpringCache抽象注解的使用方式 既然这是一个抽象,我们需要一个具体的缓存存储实现.比价流行的有:基于J ...

最新文章

  1. alibaba JSON TypeReference 复杂类型转换
  2. 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱
  3. python天天向上的力量 A
  4. 好文转载—为程序员量身定制的12个目标
  5. 全国数据中心分布图上线 轻轻松松找机房
  6. vs联合torch,ZED相机api,opencv建立C++项目
  7. Java设计模式之策略设计模式
  8. php旧版本windows_Windows的旧版本中如何进行多任务处理?
  9. Android之如何ubuntu环境下在手机里面快速找到apk的位置然后拉下来
  10. linux基本命令-ls
  11. Qt 5.9.1 连 MYSQL 5.7数据库
  12. 情感分析︱网络公开的免费文本语料训练数据集汇总
  13. 【matplotlib】对x轴标签进行旋转的方法小结
  14. 虚函数、C++类、结构体、父类与子类的继承性
  15. 独家 | 手把手教随机森林
  16. 设置gvim中横竖光标_VIM的配置:高亮光标所在的行列
  17. PHP 处理苹果内购二次验证
  18. 实习每日总结_20161220
  19. pytorch3D参考教程
  20. SSH登陆,用XShell

热门文章

  1. 训练超参数, 出现 Cannot use GPU in CPU-only Caffe 错误?
  2. C++标准输出流对象
  3. C++模板中的函数式参数
  4. mongo 3t 处理时间
  5. 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)
  6. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
  7. 415. Add Strings
  8. 推荐系统笔记:基于非负矩阵分解的协同过滤
  9. tableau实战系列(九)-用 ZN 函数处理数据缺失点
  10. (详细)Hibernate框架的搭建,Hibernate的CRUD操作(一)