Springboot2.x集成ecache3.8.1使用@Cacheable缓存(代码方式,无xml)
文章目录
- 前言
- 一、引入相关依赖
- 二、配置类
- 三、 原理说明
- 四、使用
前言
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。具体详情参考官网:ehcache官网
Ehcache2和Ehcache3之间的差异比较大, 最大差异在:Ehcache2包名为:net.sf.ehcache,而Ehcache3包名为:org.ehcache。Ehcache有xml配置和代码配置两种方式,本文只讲代码配置方式。
一、引入相关依赖
<!-- Spring boot开启缓存 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!-- ehcache缓存 -->
<dependency><groupId>org.ehcache</groupId><artifactId>ehcache</artifactId><version>3.8.1</version>
</dependency>
<!-- JCache(JSR-107),必须引入 -->
<dependency><groupId>javax.cache</groupId><artifactId>cache-api</artifactId><version>1.1.1</version>
</dependency>
二、配置类
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.ExpiryPolicyBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.units.MemoryUnit;
import org.ehcache.jsr107.Eh107Configuration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.spi.CachingProvider;/*** ehcache 配置类*/
@Configuration
@EnableCaching
public class EhcacheConfig {@Bean("ehcacheManager")public CacheManager cacheManager() {// 从jcache中拿到CacheManagerCachingProvider cachingProvider = Caching.getCachingProvider();CacheManager cacheManager = cachingProvider.getCacheManager();// 创建一个缓存名为user-cache的缓存(核心是Eh107Configuration.fromEhcacheCacheConfiguration)cacheManager.createCache("user-cache", Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, Object.class,// 堆内存,读取速度最快,但是资源小ResourcePoolsBuilder.heap(10000)// 堆外内存,读取速度第二快,资源相对较大.offheap(10, MemoryUnit.MB)// 持久化到磁盘中,最后一个参数必须设为true//.disk(20, MemoryUnit.MB, true)// 最后设置这一类缓存过期时间(20分钟过期)).withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(java.time.Duration.ofSeconds(20 * 60)))));return cacheManager;}
}
三、 原理说明
echahe2.x与springboot整合时,springcache已经提供了EhCacheCacheManager(org.springframework.cache.ehcache)做为@Cacheable的CacheManager(org.springframework.cache),因此只要提供一个EhCacheCacheManager即可
echahe3.x与springboot整合时,因为EhCacheCacheManager中的CacheManager还是net.sf.ehcache.CacheManager(也就是ecache2.x),所以必须借助JCacheCacheManager(org.springframework.cache.jcache)实现@Cacheable缓存。注意:JCache(JSR-107)是一种标准规范,在springboot中需要引入javax.cache.cache-api.jar包。
ehcache和jcache结合参考:https://www.ehcache.org/documentation/3.8/107.html
四、使用
@Component
public class UserCache {@Cacheable(value = "user-cache", key = "#root.methodName+'_'+#username", unless = "#result == null")public User getUserByUserName(String username) {return new User(username);}
}
Springboot2.x集成ecache3.8.1使用@Cacheable缓存(代码方式,无xml)相关推荐
- SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享
文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...
- SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件
SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件 前言 1. 引入依赖 2. 设置邮件配置信息 3. 发送邮件 3.1 发送普通文本邮件 3.2 发送HTML格式内 ...
- SpringBoot2.x 集成 七牛云对象存储Kodo
本文主要对SpringBoot2.x集成七牛云对象存储Kodo进行简单总结,其中SpringBoot使用的2.4.5版本. 一.七牛云对象存储Kodo简介 七牛云对象存储Kodo是七牛云提供的高可靠. ...
- SpringBoot2.x 集成 FreeMarker
本文主要对SpringBoot2.x集成FreeMarker及其常用语法进行简单总结,其中SpringBoot使用的2.4.5版本. 一.FreeMarker简介 Apache FreeMarker™ ...
- Springboot2.0集成阿里云RocketMQ
介绍 RocketMQ是出自阿里巴巴的一款开源消息中间件,在设计上借鉴了Kafka,2017年成为Apache顶级项目,虽然目前社区无法和Kafka比肩,但其历经多次天猫双十一的考验,其性能和稳定是毋 ...
- springboot2.x集成ureport2.2.9搭建报表引擎
springboot2.x集成ureport2.2.9搭建报表引擎 1.创建springboot项目,修改pom.xml添加相关依赖 2.增加src/main/resources/context.pr ...
- SpringBoot2.x 集成 Thymeleaf
本文主要对SpringBoot2.x集成Thymeleaf及其常用语法进行简单总结,其中SpringBoot使用的2.4.5版本. 一.Thymeleaf简介 Thymeleaf是面向Web和独立环境 ...
- Springboot2.x集成ElasticSearch
目录 springboot2.x集成es springboot2.x集成es 首先导入我们的pom依赖 <dependency><groupId>org.springframe ...
- SpringBoot2.x 集成 SpringDataJpa
SpringDataJpa简介:Spring Data JPA是Spring Data家族的一员,可以轻松实现基于JPA的存储库.该模块处理对基于JPA的数据访问层的增强支持.这使得构建使用数据访问技 ...
最新文章
- c#中邮件收发处理(POP3,IMAP,SMTP)的实现方法
- textarea 高度调整
- C#里调用带输出参数的存储过程
- Nginx之windows下搭建
- OpenCV相交凸intersectConvex的实例(附完整代码)
- Chrome的console
- 全球视频监控设备市场规模分析
- 00005在java结果输出_Java-005-运算符详解
- 编译mediastreamer2/ffmpeg/linphone(x86平台)
- Gartner 企业级网络设备市场份额报告:阿里云负载均衡增速全球第一
- WordPress主题modown6.2+erphpdown11.7
- ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)
- 计算机网络数据链路层之高速以太网(含使用以太网进行宽带接入)
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_13 课程知识梳理
- LInux usb mouse(鼠标)驱动分析
- 基于STM32F103的ACS712电流传感器使用教程
- [HAOI2009]毛毛虫(树形dp)
- c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
- 实验05 指针及其在程序设计中的应用(2021级)
- js中 0 +0 -0 有什么区别?
热门文章
- 【Python项目】圣诞节快到了,Python基于海龟(turtle)实现的圣诞树效果,是好几个哟 | 附源码
- 吉林大学 超星慕课 高级语言程序设计 实验06 结构体(2022级)
- 有没有谁用过网络尖兵?
- 使用广播接收者获取短信及拦截电话
- modelsim仿真系列之基于ISE的IP核的独立仿真(二)
- GooglePlay各种权限AndroidManifest.xml权限配置及说明
- 黑色星期五c语言程序,第一届蓝桥杯C/C++组编程题1 黑色星期五
- 真果科技董事长贾求真女士应邀出席2019APEC女性领导力论坛
- 服务器多系统ssd寿命检测,SSD是什么?寿命如何?
- SAP SD 销售组织架构