Spring Cache抽象-缓存管理器
- 概述
- 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抽象-缓存管理器相关推荐
- Spring Cache抽象-缓存注解
文章目录 概述 Spring缓存的基本原理 @Cacheable :主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 键生成器 带条件的缓存 @Cacheable 注解参数说明 示例-缓存管理 ...
- java缓存管理器_使用@EnableCaching的Spring Boot默认缓存管理器
我在SpringBootApplication中实现了缓存,如下所示 @SpringBootApplication @EnableCaching public class SampleApplicat ...
- spring默认缓存管理器_使用Spring的缓存管理器缓存Web内容
spring默认缓存管理器 在这篇文章中,我想向大家展示如何使用Spring的CacheManager,@ Cacheable和JMX批注来缓存和管理Web内容的缓存的基础知识. 想象一下一个网上商店 ...
- Spring 的缓存管理器 CacheManager
Spring 的缓存管理器 在 spring 项目中提供了CacheManager接口来定义缓存管理器,这样各个不同的缓存就可以实现它来提供管理器的功能了,在spring-boot-starter-d ...
- Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)
概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...
- Spring Cache抽象-基于XML的配置声明(基于ConcurrentMap的配置)
概述 示例 项目结构 数据库表数据Oracle 实体类 服务层 Spring配置文件 单元测试 日志输出 日志分析 示例源码 概述 Spring Cache基于注解的配置 如果不想使用注解或者由于其他 ...
- http缓存管理器_小心缓存管理器
http缓存管理器 如果使用spring和JPA,则很有可能利用ehcache(或其他缓存提供程序). 您可以在两种不同的情况下进行此操作:JPA 2级缓存和spring方法缓存. 配置应用程序时,通 ...
- springboot缓存管理器(CacheManager)
springboot缓存管理器(CacheManager)讲解--超详细!!! 一.引入 随着java的慢慢学习,缓存的使用也越来越多.我们使用缓存大多数是通过api的方式来操作,厉害的人也可以自己 ...
- Spring Cache抽象-使用Java类注解的方式整合EhCache
概述 工程结构 源码 概述 Spring Cache抽象-之缓存注解这篇博文中我们介绍了SpringCache抽象注解的使用方式 既然这是一个抽象,我们需要一个具体的缓存存储实现.比价流行的有:基于J ...
最新文章
- alibaba JSON TypeReference 复杂类型转换
- 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱
- python天天向上的力量 A
- 好文转载—为程序员量身定制的12个目标
- 全国数据中心分布图上线 轻轻松松找机房
- vs联合torch,ZED相机api,opencv建立C++项目
- Java设计模式之策略设计模式
- php旧版本windows_Windows的旧版本中如何进行多任务处理?
- Android之如何ubuntu环境下在手机里面快速找到apk的位置然后拉下来
- linux基本命令-ls
- Qt 5.9.1 连 MYSQL 5.7数据库
- 情感分析︱网络公开的免费文本语料训练数据集汇总
- 【matplotlib】对x轴标签进行旋转的方法小结
- 虚函数、C++类、结构体、父类与子类的继承性
- 独家 | 手把手教随机森林
- 设置gvim中横竖光标_VIM的配置:高亮光标所在的行列
- PHP 处理苹果内购二次验证
- 实习每日总结_20161220
- pytorch3D参考教程
- SSH登陆,用XShell
热门文章
- 训练超参数, 出现 Cannot use GPU in CPU-only Caffe 错误?
- C++标准输出流对象
- C++模板中的函数式参数
- mongo 3t 处理时间
- 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)
- Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
- 415. Add Strings
- 推荐系统笔记:基于非负矩阵分解的协同过滤
- tableau实战系列(九)-用 ZN 函数处理数据缺失点
- (详细)Hibernate框架的搭建,Hibernate的CRUD操作(一)