springboot整合EHCache的实践方案

作者:OnyWang 时间:2023-08-23 23:48:31 

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

ehcache提供了多种缓存策略,主要分为内存和磁盘两级,所以无需担心容量问题。

spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

用户登录之后,几乎之后展示任何页面都需要显示一下用户信息。可以在用户登录成功之后将用户信息进行缓存,之后直接取缓存数据即可。

写在前面

对于SpringBoot而言,内置了属于自己的缓存框架,即:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

如何使用该框架进行缓存,网上一大堆资料。但是绝大多数都是描述如何在service层进行缓存,之后从数据库取数据的时候直接拿缓存数据,不再进行二次查询了。 但是我目前的需求仅仅是缓存登录用户,下次直接用代码取出来。而不是再调一次service方法!貌似搜到任何资料!可能大家都没遇到过吧。

探索方案

在之前的项目中,曾经用到过EHcache,当然也有对应的EHCacheUtils方法。下面就说一下springboot和ehcache的整合。

真实操作之后,发现整合ehcache非常简单,三步即可:

导入maven包


<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.1</version>
</dependency>

在启动类开启缓存机制

springboot整合EHCache的实践方案 

image.png

添加ehcache配置文件,直接在resources下面新建ehcache.xml文件即可。文件配置如下:


<?xml version="1.0" encoding="UTF-8" ?>
<ehcache>
<cache name="objectCache" maxElementsInMemory="1000"></cache>
</ehcache>

使用缓存

此时,springboot已经为ehcacheManager生成了一个Bean。我们在自己需要的地方直接注入即可。下面是我的简单utils文件和存数据取数据的地方,仅供参考。有不对的地方,欢迎指正。

util如下,只提供set和get方法:


public class EHCacheUtils {
/**
 * 设置缓存对象
 * @param cacheManager
 * @param key
 * @param object
 */
public static void setCache(CacheManager cacheManager,String key,Object object){
 Cache cache = cacheManager.getCache("objectCache");
 Element element = new Element(key,object);
 cache.put(element);
}
/**
 * 从缓存中取出对象
 * @param cacheManager
 * @param key
 * @return
 */
public static Object getCache(CacheManager cacheManager,String key){
 Object object = null;
 Cache cache = cacheManager.getCache("objectCache");
 if(cache.get(key)!=null && !cache.get(key).equals("")){
  object = cache.get(key).getObjectValue();
 }
 return object;
}
}

存入缓存方法如下:


@Autowired
private CacheManager cacheManager;
//部分关键代码
EHCacheUtils.setCache(cacheManager,"op",searchOP);

取出缓存方法如下:


@Autowired
private CacheManager cacheManager;
Operator searchOP = (Operator) EHCacheUtils.getCache(cacheManager,"op");

写在最后

个人觉得,springboot提供的基于注解的方式进行缓存更加适合 * 的方式去处理。对应指定的请求均去走设置了缓存机制的service方法,该sevice会根据实际情况去直接取缓存或者查询数据库。

总结

以上所述是小编给大家介绍的springboot整合EHCache的实践方案,希望对大家有所帮助

来源:https://www.jianshu.com/p/05f3ede0b389

标签:spring,boot,ehcache
0
投稿

猜你喜欢

  • java + dom4j.jar提取xml文档内容

    2023-11-29 03:55:10
  • SpringBoot集成RabbitMQ和概念介绍

    2022-06-25 18:36:24
  • Java和C#输入输出流的方法(详解)

    2022-06-24 09:21:02
  • Spring Boot 动态数据源示例(多数据源自动切换)

    2021-07-03 04:27:02
  • 简单实现Android刮刮卡效果

    2022-08-12 01:49:00
  • C# 文件下载之断点续传实现代码

    2021-05-24 15:37:02
  • Java Online Exam在线考试系统的实现

    2022-01-30 13:49:35
  • Java 栈与队列实战真题训练

    2021-06-11 01:46:08
  • springboot配置Jackson返回统一默认值的实现示例

    2023-12-08 13:55:22
  • Android使用注解代替枚举节省系统内存开销的方法

    2021-09-28 18:46:06
  • Unity为软件添加使用有效期的具体步骤

    2022-07-01 16:45:03
  • Android实现控制摄像头拍照

    2022-06-03 02:14:06
  • 合成聚合复用原则_动力节点Java学院整理

    2023-06-27 22:05:20
  • Spring七大事务传递机制深入分析实现原理

    2022-12-21 16:28:37
  • Java多线程同步工具类CyclicBarrier的使用

    2021-08-26 05:29:53
  • RocketMQ源码解析topic创建机制详解

    2023-03-16 01:06:23
  • 浅谈Spring @Async异步线程池用法总结

    2021-09-11 07:12:08
  • Spring boot配置绑定和配置属性校验的方式详解

    2022-04-21 03:06:06
  • Android Jni的简单使用详解

    2023-10-20 14:37:43
  • android 中 webview 怎么用 localStorage

    2023-04-28 04:38:36
  • asp之家 软件编程 m.aspxhome.com