Spring 使用 Ehcache 技术指南

JVM之EhCache缓存 在查询数据的时候,数据大多来自数据库,咱们会基于SQL语句的方式与数据库交互,数据库一般会基于本地磁盘IO的形式将数据读取到内存,返回给Java服务端,Java服务端再将数据响应给客户端,做数据展示。但是MySQL这种关系型数据库在查询数据时,相对比较慢,因为有磁盘IO,有时没命中索引还需要全盘扫描。在针对一些热点数据时,如果完全采用MySQL,会存在俩问题。第一个MySQL相对很脆弱,肯能会崩,第二个MySQL查询效率慢。会采用缓存。 阅读详情

在 Java 企业应用开发中,缓存是一种非常重要的技术,可以有效提高应用的性能和响应速度。Ehcache 是一个非常流行的开源缓存解决方案,广泛应用于各种 Java 应用中。本文将介绍如何在 Spring 框架中集成和使用 Ehcache。

1. 引入 Ehcache 依赖

首先,在项目的 pom.xml 文件中添加 Ehcache 和 Spring 的依赖:

<dependencies>
    <!-- Spring 缓存依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    
    <!-- Ehcache 依赖 -->
    <dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>3.10.0</version>
    </dependency>
</dependencies>

2. 配置 Ehcache

在资源目录下创建 ehcache.xml 文件,配置 Ehcache 缓存策略:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
        xmlns='http://www.ehcache.org/v3'
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">

    <cache alias="exampleCache">
        <key-type>java.lang.String</key-type>
        <value-type>java.lang.String</value-type>
        <expiry>
            <ttl unit="seconds">600</ttl>
        </expiry>
        <heap unit="entries">100</heap>
    </cache>

</config>

3. Spring 缓存配置

在 Spring 应用中启用缓存,并配置 Ehcache 作为缓存管理器。在主配置类中添加以下内容:

import org.ehcache.jsr107.EhcacheCachingProvider;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.cache.Caching;
import javax.cache.configuration.Configuration;
import javax.cache.spi.CachingProvider;
import java.net.URISyntaxException;
import java.net.URL;

@Configuration
@EnableCaching
public class CacheConfig {

    @Bean
    public javax.cache.CacheManager cacheManager() throws URISyntaxException {
        CachingProvider cachingProvider = Caching.getCachingProvider();
        URL myUrl = getClass().getResource("/ehcache.xml");
        Configuration<?, ?> configuration = cachingProvider.getCacheManager(
            myUrl.toURI(), getClass().getClassLoader()).getConfiguration(Configuration.class);
        return cachingProvider.getCacheManager();
    }
}

4. 使用缓存

在需要缓存的方法上使用 @Cacheable 注解:

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Cacheable("exampleCache")
    public String getUserById(String userId) {
        // 模拟耗时操作,例如数据库查询
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "User:" + userId;
    }
}

在上述代码中,getUserById 方法将会被缓存,当使用相同的参数调用时,将直接返回缓存中的结果,而不会再次执行方法体。

5. 清除缓存

可以使用 @CacheEvict 注解清除缓存:

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @CacheEvict(cacheNames = "exampleCache", allEntries = true)
    public void clearCache() {
        // 清除缓存
    }
}

6. 测试缓存

编写测试代码来验证缓存功能:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class CacheTestRunner implements CommandLineRunner {

    @Autowired
    private UserService userService;

    @Override
    public void run(String... args) throws Exception {
        System.out.println("First call: " + userService.getUserById("1"));
        System.out.println("Second call: " + userService.getUserById("1"));
        System.out.println("Third call: " + userService.getUserById("2"));
    }
}

运行应用,你将会看到第一次调用 getUserById 方法时有 3 秒的延迟,而后续调用相同参数的方法将会立即返回结果。

结论

通过本文的介绍,我们了解了如何在 Spring 中集成和使用 Ehcache。通过配置 Ehcache 和使用 Spring 提供的缓存注解,可以显著提升应用的性能。Ehcache 的强大功能和 Spring 的灵活性结合,使得缓存管理变得更加简单高效。

Spring Cache和EhCache实现缓存管理 1、认识Spring Cache Spring Cache是Spring提供的一整套缓存解决方案。它本身并不提供缓存实现,而是提供统一的接口和代码规范、配置、注解等,以便整合各种Cache方案,使用户不用关心Cache的细节。 Spring支持“透明”地向应用程序添加缓存,将缓存应用于方法,在方法执行前检查缓存中是否有可用的数据。这样可以减少方法执行的次数,同时提高响应的速度。缓存的应用方式“透明”,不会对调用者造成任何干扰。只要通过注解@EnableCaching启用了缓存支持,Spring Boo. 阅读详情

相关推荐

缓存类型及优缺点:Ehcache、Caffeine、Memcached和Redis的比较

本文将对比分析四种常见的缓存类型:Ehcache、Caffeine、Memcached和Redis。通过探讨它们的优点、缺点以及适用场景,帮助读者更好地理解如何根据实际需求选择合适的缓存技术。同时,本文还将简要介绍这四种缓存类型支持的数据类型

程序员Forlan的博客 6616

Ehcache详解(转载)

Ehcache 是一种基于标准的开源缓存,可提高性能,卸载数据库并简化可伸缩性。 它是使用最广泛的基于 Java 的缓存,因为它功能强大,经过验证,功能齐全,并与其他流行的库和框架集成。

ElegantApple的博客 8841

SpringBoot系列:Spring Boot集成Spring Cache,使用EhCache

path:指定在硬盘上存储对象的路径path可以配置的目录有:user.home(用户的家目录)user.dir(用户当前的工作目录)java.io.tmpdir(默认的临时目录)ehcache.disk.store.dir(ehcache的配置目录)绝对路径(如:d:\ehcache)查看路径方法:String tmpDir = System.getProperty(“java.io.tmpdir”);–>

2401_84010302的博客 445

一文详解Ehcache

缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。表明所修饰的方法是可以缓存的:当第一次调用这个方法时,它的结果会被缓存下来,在缓存的有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法中的代码段。首先使用注解标记方法,相当于定义了切点,然后使用 Aop 技术在这个方法的调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。:这个参数设置 DiskStore(磁盘缓存)的缓存区大小。

通往IT大道的专栏 5154

Docker “docker login“ 失败? 登录阿里云镜像仓库仓库 unauthorized: authentication required

文章目录听说你 login fail?来,让我们解决一下!登录,撒花 听说你 login fail? 美滋滋的在服务器上安装完成Docker应用,开始配置阿里云镜像加速?然后被阿里云官方文档蹂躏?别急别急,让我来拯救你。 我们先来看看 阿里云官方文档 Docker镜像基本操作: 好家伙,emmm… 上来直接就Login Succeeded,这不简直so easy?我们也来照着操作操作: docker@default-online:~$ docker login registry.cn-hangzhou.a

zhuzicc的博客 1万+

从AND到XOR:5种门控电路在PrimeTime中的检查策略差异

本文深入探讨了AND、NAND、OR、NOR和XOR五种门控电路在PrimeTime静态时序分析中的检查策略差异。重点解析了XOR门控因其非单调性而无法被工具自动推断,需要工程师手动配置的特殊性,并提供了针对各类门控的配置模板与调试技巧,以确保时钟网络的完整性与芯片设计的可靠性。

rgv2345678的博客 270

【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战指南(8-Spring整合ehcache)

-diskStore path:用来配置磁盘缓存使用的物理路径name: 缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里)eternal="false" 元素是否永恒,如果是就永不过期(必须设置)maxElementsOnDisk=磁盘缓存中最多可以存放的元素数量,0表示无穷大maxElementsInMemory="1000" 内存缓存中最多可以存放的元素数量(必须设置)

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 637

AVL(Athena Vortex Lattice)如何编写与应用(一)

前两个是弦向的涡个数和以cos函数分布的间距参数(设为1即可)后两个可以在这里声明也可以写到后面的每一个section中,是展向的涡个数和以sin函数分布的间距参数。这个文件是用来建立飞机模型的文件,是一定要有的文件,其他的.run和.mass并不是必须要有的,甚至mass文件并没有看到有人在使用。Sref、Cref、Bref是飞机的参考面积参考弦长和参考的展长,我的理解就是所设计飞机的S,c,b这三个参数。———————————————以上是飞机的基本信息———————————————

dawangaa的博客 1510

如何在Spring Boot中使用EhCache缓存

在查询数据的时候,数据大多来自于数据库,我们会基于SQL语句与数据库交互,数据库一般会基于本地磁盘IO将数据读取到内存,返回给Java服务端,我们再将数据响应给前端,做数据展示。但是MySQL这种关系型数据库查询数据相对比较慢,因为有磁盘IO,或者是全盘扫描的风险,在针对一些热点数据时,会对MySQL造成比较大的压力,此时我们可以采用缓存的方式来解决。而缓存又分为很多种,相对服务端角度来说,可以采用Redis和JVM这两种方式。

weixin_73412838的博客 3750

避坑指南:CST粒子工作室Track Solver常见的5个参数设置错误

本文深入剖析了CST粒子工作室中Track Solver在电子枪仿真时常见的5个关键参数设置错误,包括空间电荷模型选择、发射源定义、材料边界处理、监视器配置及求解器稳定性设置。通过对比错误与正确做法,帮助用户避开陷阱,确保粒子追踪仿真的物理准确性与数值稳定性,从而获得更精准的电子枪仿真结果。

dapp9builder的博客 488

【有啥问啥】智能座舱CPD技术:毫米波雷达如何守护儿童安全?

本文深入探讨了智能座舱中CPD(Child Presence Detection)技术如何通过毫米波雷达保障儿童安全。毫米波雷达凭借其穿透性检测、微动感知等优势,成为儿童遗留车内的有效解决方案。文章详细解析了技术原理、系统集成方案及安装指南,为智能座舱安全技术提供了实用参考。

weixin_29193259的博客 358

Spring使用Cache、整合Ehcache

Spring使用Cache、整合Ehcache         从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所

Elim的博客 1万+

python数据处理与分析案例,python如何进行数据处理

大家好,本文将围绕基于python的数据处理案例展开说明,python数据处理与分析案例是一个很多人都想弄明白的事情,想搞清楚python如何进行数据处理需要先了解以下几个事情。大家好,小编来为大家解答以下问题,python数据处理案例步骤及其代码,python数据处理与分析教程,今天让我们一起来看看吧!哈喽~今天学习记录的是数据分析实训小案例。就用这个案例来好好巩固一下 python 数据分析三剑客。

a17348的博客 1238

spring + ehcache 使用实例

1 spring与ehcache结合使用,需要导入如下的包:ehcache , commons-logging , cglib , asm , spring的jar包具体版本可以选择最新。2 spring配置文件applicationContext.xml如下:

先相信你自己,然后别人才会相信你。 3万+

RISC-V CPU设计(三)---多周期CPU的设计与实现

基本情况 本多周期CPU支持RV32I指令集(fence,ecall,ebreak除外),已通过部分指令的测试,如代码有bug,欢迎指出。 模块划分 代码将CPU划分为以下几个模块: 1.控制单元:ControlUnit 用于产生控制信号,是CPU的大脑,指挥中枢。 2.分支决策单元:BranchUnit 用于决定B型指令是否发生跳转 3.立即数单元:ImmUnit 用于从指令中解析出立即数. 4.寄存器堆:RegisterFile RISC-V的32个寄存器,其中x0寄存器恒为0,不可更改。 5.指令存储

qq_40268672的博客 5542

后仿真中《SDF反标必懂连载篇》之 探究 SDF延迟精度 与 timescale 精度问题

本篇文章,同样属于后仿真中的SDF反标系列文章内容之一。今天,将前仿真中的timescale 和 后仿真中 timescale+sdf 延迟数据,进行贯通讲解。不要忽视这部分内容,因为后仿真的成功准确与否,时间精度问题,很重要。为什么?接下来一一讲解。

那么菜的博客 2311

Spring集成ehcache

1.导入jar包 ehcache-core-2.4.5.jar ehcache-spring-annotations-1.2.0.jar(使用spring注解的形式配置时需要引入的jar包,依赖于guava) ehcache-web-2.0.4.jar(做页面缓存需要用到) guava-r09.jar(google推出可以帮助你写出更优雅代码的工具,和apache-commons差不多)

太匆匆 1142

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

EhCache的使用及与Spring的整合

本文主要介绍EhCache的使用,以及EhCache与Spring的整合的实践经验。 EHCache API的基本用法 首先介绍CacheManager类。它主要负责读取配置文件,默认读取CLASSPATH下的ehcache.xml,根据配置文件创建并管理Cache对象。 // 使用默认配置文件创建CacheManager CacheManag

special dream的博客 2512

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用spring cache和ehcache

一.spring cache Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。使用Spring Cache需...

王小汪的博客 670

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

spring boot中使用ehcache

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33701251的博客 116

spring ehcache 使用详解

Spring 整合 Ehcache 管理缓存详解 yellowbutterfly 前言 Ehcache是一个成熟的缓存框架,你可以直接使用它来管理你的缓存。 Spring提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。 本文先通过Ehcache独立应用的范例来介...

272

spring 集成 ehcache

一、准备工作 需要依赖 jar 包: 1.ehcache核心包                net.sf.ehcache        ehcache-core     2.spring 扩展包        org.springframework        spring-context-support     二、编程开发 1.ehcache.

wyc2410的专栏 880

spring中基于aop使用ehcache

继续上篇,这篇介绍服务层缓存,基于aop的方式使用ehcache 一、修改配置文件 修改spring-context-ehcache.xml文件,加入: <!-- ehcache缓存实例 --> <bean id="testCacheInterceptor" class="org.springframework.cache.ehcache.EhCach...

113

EhCache使用

1,使用代码编写的方式使用ehcache: 准备一个可用的maven项目:pom文件中引用:; <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.3</version> </dependency> 版本号可根据具体匹配; 1.:首先您得准备一些ehcache

z_xin1024的博客 596
上一篇: 使用 Spring 整合 Kafka 进行消息处理
下一篇: 在 Spring 中使用 Redis 进行缓存
firepation
博客等级 码龄10年 2254粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值