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>
在启动类开启缓存机制
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


猜你喜欢
- 1.利用 “+”(加号)运算符:string str = “Hello”+ “World”; console.WriteLine(str);
- Java 8支持动态语言,看到了很酷的Lambda表达式,对一直以静态类型语言自居的Java,让人看到了Java虚拟机可以支持动态语言的目标
- 1 前言敏感词过滤就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模
- 用微信提供的SDK来实现分享:从http://open.weixin.qq.com下载Android相关的jar包,将libammsdk.j
- 文章来源:csdn 作者:wangfengsdu经常听到回调函数(callback function)这个概念, 所谓回调函数,就是指这个函
- 一般入参我们都会转为vo对象。那么直接在对象的属性上注解即可。 其实spring用的是hibernate的validator.步骤1.配置s
- 在我们的服务中不可避免的需要使用到一些秘钥(数据库、redis等)开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一
- 前言:最近涉及到和QQ打交道,定义所有的好友一共只能有300条消息,如果一次性从数据库读取300条或者更多,界面会有细微的卡顿.所以考虑了下
- map此内容是方便博主自己记忆内容,不用于公开学习资料,若发现语法错误,自行更正,勿喷map转JSON字符串package com.hanf
- 关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)应用场景:很多时候我们想要在某个类加载完毕时
- 1.前言在java当中,若是进行比较,大家可能第一时间想到,==或是!=,这种数学上的比较符>、接下来,我就分别介绍并演示
- 本文实例讲述了C#导出数据到Excel文件的方法。分享给大家供大家参考。具体实现方法如下:/// <summary>/// 导出
- Android Java 如何调用自己的 C++ 的类库下面以 Java 调用 C++ 的加法运算函数为例,做简单说明。(使用 Androi
- 之前已经为大家介绍过利用Java实现带GUI的气泡诗词特效,本文将为大家介绍另一种方法同样也可以实现气泡诗词的效果。下面是示例代码impor
- 一、创建地形1、GameObject ->3D Object-> Terrain,创建带有地形属性的平面2、Terrain-〉最
- 优点1.装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点2.多层装饰比较
- 一、在spring的应用中我们存在两种过滤的用法,一种是 * 、另外一种当然是过滤器。我们这里介绍过滤器在springboot的用法,在sp
- 本文实例讲述了java对象转型的概念,分享给大家供大家参考。具体方法如下:对象转型(casting)注意事项如下:1、一个基类的引用类型变量
- MainActivity如下: package cn.testcallback; import android.os.Bundle; imp
- 迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象