项目需求要缓存常用数据,整合Ehcache实现,结果@Cacheable注解怎么都不管用,网上找了很多资料各种试各种不行,无奈!只好写个工具类使用。

一、pom.xml配置

<dependency><groupId>org.ehcache</groupId><artifactId>ehcache</artifactId><version>${ehcache.version}</version>
</dependency>
<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId>
</dependency>

二、ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"name="taxiEhcache" updateCheck="false"><!-- 磁盘缓存位置 --><diskStore path="java.io.tmpdir"/><!--缓存配置name:                            缓存名称。maxElementsInMemory:            缓存最大个数。eternal:                         对象是否永久有效,一但设置了,timeout将不起作用。timeToIdleSeconds:              设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。timeToLiveSeconds:              设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。overflowToDisk:                 当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。diskSpoolBufferSizeMB:          这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。maxElementsOnDisk:              硬盘最大缓存个数。diskPersistent:                 是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。memoryStoreEvictionPolicy:      当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。clearOnFlush:                   内存数量最大时是否清除。--><!-- 默认缓存 --><defaultCache eternal="false"maxElementsInMemory="1000"overflowToDisk="false"diskPersistent="false"timeToIdleSeconds="0"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LRU"></defaultCache><cache name="taxiCache"maxEntriesLocalHeap="10000"eternal="false"timeToIdleSeconds="0"timeToLiveSeconds="0"overflowToDisk="false"statistics="true"></cache></ehcache>

三、编写工具类

public class EhCacheUtil {private static final Logger log = LoggerFactory.getLogger(EhCacheUtil.class);
private static final String PATH = ClassUtils.getDefaultClassLoader().getResource("").getPath()+"ehcache/ehcache.xml";private CacheManager manager;private static EhCacheUtil ehCache;
public static final String TAXI_CACHE = "taxiCache";public static final String GROUP_TREE_KEY = "groupTreeList";public static final String GROUP_VEHICLE_TREE_KEY = "groupVehicleTreeList";/*** 获得缓存配置管理* @param path*/private EhCacheUtil(String path) {try {manager = CacheManager.create(path);} catch (Exception e) {e.printStackTrace();log.error("获取配置文件错误:{}",e.getMessage());}}/*** 初始化缓存管理类* @return*/public static EhCacheUtil getInstance() {try {if (ehCache== null) {ehCache= new EhCacheUtil(PATH);}} catch (Exception e) {e.printStackTrace();log.error("初始化错误:{}",e.getMessage());}return ehCache;}/*** 获取Cache类* @param cacheName* @return*/public Cache getCache(String cacheName) {return manager.getCache(cacheName);}/*** 添加缓存数据* @param cacheName* @param key* @param value*/public void put(String cacheName, String key, Object value) {try {Cache cache = manager.getCache(cacheName);Element element = new Element(key, value);cache.put(element);} catch (Exception e) {e.printStackTrace();log.error("添加缓存失败:{}",e.getMessage());}}/*** 获取缓存数据* @param cacheName* @param key* @return*/public Object get(String cacheName, String key) {try {Cache cache = manager.getCache(cacheName);Element element = cache.get(key);return element == null ? null : element.getObjectValue();} catch (Exception e) {e.printStackTrace();log.error("获取缓存数据失败:{}",e.getMessage());return null;}}/*** 删除缓存数据* @param cacheName* @param key*/public void delete(String cacheName, String key) {try {Cache cache = manager.getCache(cacheName);cache.remove(key);} catch (Exception e) {e.printStackTrace();log.error("删除缓存数据失败:{}",e.getMessage());}}
}

四、调用

1、存数据

EhCacheUtil ehCacheUtil = EhCacheUtil.getInstance();
ehCacheUtil.put(ehCacheUtil.TAXI_CACHE,ehCacheUtil.GROUP_VEHICLE_TREE_KEY,ztrees);

2、取数据

ztrees = (List<Ztree>) ehCacheUtil.get(ehCacheUtil.TAXI_CACHE,ehCacheUtil.GROUP_VEHICLE_TREE_KEY);

3、删除缓存

ehCacheUtil.delete(ehCacheUtil.TAXI_CACHE,ehCacheUtil.GROUP_TREE_KEY);

转载于:https://www.cnblogs.com/pengjf/p/11090924.html

springBoot整合Ehcache——工具类调用相关推荐

  1. springboot整合ehcache使用

    springboot整合ehcache使用 其实本地缓存的解决方案也有很多种,像Ehcache,GuavaCache,JCache等目前Ehcache 是现在最流行的纯Java开源缓存框架,配置简单. ...

  2. 搭建第一个SpringBoot工程;SpringBoot整合mybatis;SpringBoot整合Redis-cluster集群;SpringBoot整合EhCache;

    写在前头,以下内容主要是为了自己复习之用,如果你有幸看到这篇文章,请不要嫌弃某些地方有所跳跃或省略. 1. 搭建第一个SpringBoot工程 1.1 创建工程 1.2 初始pom.xml文件内容 1 ...

  3. 如何调用封装工具类调用网上接口查询工作日

    如何调用封装工具类调用网上接口查询工作日 这里的编辑器是STS,用的springboot集成环境: 先引进pom.xml依赖包 <?xml version="1.0" enc ...

  4. springboot整合ehcache+redis实现双缓存

    在一些对并发业务要求较高的场景下,对页面数据的响应是个急需解决的问题,对后端来说,ehcache+redis实现双缓存是解决这一问题的不错思路,而且在不少的电商项目中得到了很好的验证,但我在网上搜寻资 ...

  5. WebService工具类调用远程接口服务时java.io.IOException: Server returned HTTP response code: 500 for URL XXX

    问题描述:在本地测试时,使用个人封装的Webservice代码工具类调用远程接口服务时,一切正常.但是一旦将该代码放到一个已有项目的中使用时,就会出现如下所示的错误提示 java.io.IOExcep ...

  6. http工具类,调用第三方接口

    6月份加入fw做开发,接到了个需求,要使用http工具类调用第三方接口,在网上也找了很多http工具类,但是都不满足我的需求:要么是只传递url和一个参数,要么是传递url和一个map集合: 我想要的 ...

  7. SpringBoot 自带工具类~断言

    SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 org.springframework.util.Assert // 要求参数 object 必须为非空(Not Nu ...

  8. springboot 集成 redis 工具类

    添加依赖 <!-- SpringBoot Boot Redis --><dependency><groupId>org.springframework.boot&l ...

  9. java工具类调用Service层类的方法

    在spring mvc 模式中,Service层的类被非Service或者非Controller层的代码调用后,是不能直接使用的.比如在工具类或者配置类中如果需要调用Service层的代码,则需要在该 ...

最新文章

  1. 双通输入法源码公布 by 尉迟方
  2. oracle 10g gateway 安装操作,Oracle 10g RAC启动节点报错 Default gateway is not defined
  3. 开源oracle client,oracle client安装与配置
  4. javascript --- [FormData的使用] 文件上传进度条展示 文件上传图片即使预览
  5. kubernetes 客户端KubeClient使用及常用api
  6. 【项目管理】阿尔法项目经理的时间投入启示
  7. android里R.layout.的问题
  8. android 系统(20)---背光灯
  9. c语言字符串型函数是,C语言字符/字符串相关函数收藏大全
  10. 佛系程序员的月薪五万指南 -- 作者|李运华
  11. Win10系统 禁止某个程序\软件联网
  12. Unity3D 图集分割
  13. 联想笔记本e43l_联想昭阳e43l
  14. 西方文化系列讲座之罗马、基督教文化
  15. 2048版俄罗斯方块java_Java版俄罗斯方块
  16. 显卡上DirectX 9.0 是什么意思
  17. yolov5——断点训练/继续训练【解决方法、使用教程】
  18. Python 淘宝商品价格爬取(requests库+正则表达式)
  19. 深入理解Activity的生命周期
  20. 一篇文章带你了解和学会VCN安卓快速开发

热门文章

  1. 数据库开发——MySQL——多表查询
  2. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第五题:网络寻路
  3. Stable Sort Aizu - ALDS1_2_C
  4. 数据结构和算法 —— 图
  5. 数据结构和算法 —— 时间复杂度+空间复杂度
  6. 征战蓝桥 —— 2016年第七届 —— C/C++A组第7题——剪邮票
  7. Exp5 MSF基础应用 20164309 欧阳彧骁
  8. 【Tools】GitBook入门教程
  9. 【IT资讯】华为“鸿蒙”所涉及的微内核究竟是什么
  10. 【Qt教程】Qt常用部件介绍