文章目录

  • 前言
  • 一、引入相关依赖
  • 二、配置类
  • 三、 原理说明
  • 四、使用

前言

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)相关推荐

  1. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享

    文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...

  2. SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件

    SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件 前言 1. 引入依赖 2. 设置邮件配置信息 3. 发送邮件 3.1 发送普通文本邮件 3.2 发送HTML格式内 ...

  3. SpringBoot2.x 集成 七牛云对象存储Kodo

    本文主要对SpringBoot2.x集成七牛云对象存储Kodo进行简单总结,其中SpringBoot使用的2.4.5版本. 一.七牛云对象存储Kodo简介 七牛云对象存储Kodo是七牛云提供的高可靠. ...

  4. SpringBoot2.x 集成 FreeMarker

    本文主要对SpringBoot2.x集成FreeMarker及其常用语法进行简单总结,其中SpringBoot使用的2.4.5版本. 一.FreeMarker简介 Apache FreeMarker™ ...

  5. Springboot2.0集成阿里云RocketMQ

    介绍 RocketMQ是出自阿里巴巴的一款开源消息中间件,在设计上借鉴了Kafka,2017年成为Apache顶级项目,虽然目前社区无法和Kafka比肩,但其历经多次天猫双十一的考验,其性能和稳定是毋 ...

  6. springboot2.x集成ureport2.2.9搭建报表引擎

    springboot2.x集成ureport2.2.9搭建报表引擎 1.创建springboot项目,修改pom.xml添加相关依赖 2.增加src/main/resources/context.pr ...

  7. SpringBoot2.x 集成 Thymeleaf

    本文主要对SpringBoot2.x集成Thymeleaf及其常用语法进行简单总结,其中SpringBoot使用的2.4.5版本. 一.Thymeleaf简介 Thymeleaf是面向Web和独立环境 ...

  8. Springboot2.x集成ElasticSearch

    目录 springboot2.x集成es springboot2.x集成es 首先导入我们的pom依赖 <dependency><groupId>org.springframe ...

  9. SpringBoot2.x 集成 SpringDataJpa

    SpringDataJpa简介:Spring Data JPA是Spring Data家族的一员,可以轻松实现基于JPA的存储库.该模块处理对基于JPA的数据访问层的增强支持.这使得构建使用数据访问技 ...

最新文章

  1. c#中邮件收发处理(POP3,IMAP,SMTP)的实现方法
  2. textarea 高度调整
  3. C#里调用带输出参数的存储过程
  4. Nginx之windows下搭建
  5. OpenCV相交凸intersectConvex的实例(附完整代码)
  6. Chrome的console
  7. 全球视频监控设备市场规模分析
  8. 00005在java结果输出_Java-005-运算符详解
  9. 编译mediastreamer2/ffmpeg/linphone(x86平台)
  10. Gartner 企业级网络设备市场份额报告:阿里云负载均衡增速全球第一
  11. WordPress主题modown6.2+erphpdown11.7
  12. ActiveReports 9实战教程(2): 准备数据源(设计时、运行时)
  13. 计算机网络数据链路层之高速以太网(含使用以太网进行宽带接入)
  14. 阶段3 2.Spring_03.Spring的 IOC 和 DI_13 课程知识梳理
  15. LInux usb mouse(鼠标)驱动分析
  16. 基于STM32F103的ACS712电流传感器使用教程
  17. [HAOI2009]毛毛虫(树形dp)
  18. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
  19. 实验05 指针及其在程序设计中的应用(2021级)
  20. js中 0 +0 -0 有什么区别?

热门文章

  1. 【Python项目】圣诞节快到了,Python基于海龟(turtle)实现的圣诞树效果,是好几个哟 | 附源码
  2. 吉林大学 超星慕课 高级语言程序设计 实验06 结构体(2022级)
  3. 有没有谁用过网络尖兵?
  4. 使用广播接收者获取短信及拦截电话
  5. modelsim仿真系列之基于ISE的IP核的独立仿真(二)
  6. GooglePlay各种权限AndroidManifest.xml权限配置及说明
  7. 黑色星期五c语言程序,第一届蓝桥杯C/C++组编程题1 黑色星期五
  8. 真果科技董事长贾求真女士应邀出席2019APEC女性领导力论坛
  9. 服务器多系统ssd寿命检测,SSD是什么?寿命如何?
  10. SAP SD 销售组织架构