日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

springBoot整合Ehcache——工具类调用

發(fā)布時(shí)間:2024/4/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springBoot整合Ehcache——工具类调用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  項(xiàng)目需求要緩存常用數(shù)據(jù),整合Ehcache實(shí)現(xiàn),結(jié)果@Cacheable注解怎么都不管用,網(wǎng)上找了很多資料各種試各種不行,無(wú)奈!只好寫(xiě)個(gè)工具類使用。

一、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: 緩存最大個(gè)數(shù)。eternal: 對(duì)象是否永久有效,一但設(shè)置了,timeout將不起作用。timeToIdleSeconds: 設(shè)置對(duì)象在失效前的允許閑置時(shí)間(單位:秒)。僅當(dāng)eternal=false對(duì)象不是永久有效時(shí)使用,可選屬性,默認(rèn)值是0,也就是可閑置時(shí)間無(wú)窮大。timeToLiveSeconds: 設(shè)置對(duì)象在失效前允許存活時(shí)間(單位:秒)。最大時(shí)間介于創(chuàng)建時(shí)間和失效時(shí)間之間。僅當(dāng)eternal=false對(duì)象不是永久有效時(shí)使用,默認(rèn)是0.,也就是對(duì)象存活時(shí)間無(wú)窮大。overflowToDisk: 當(dāng)內(nèi)存中對(duì)象數(shù)量達(dá)到maxElementsInMemory時(shí),Ehcache將會(huì)對(duì)象寫(xiě)到磁盤中。diskSpoolBufferSizeMB: 這個(gè)參數(shù)設(shè)置DiskStore(磁盤緩存)的緩存區(qū)大小。默認(rèn)是30MB。每個(gè)Cache都應(yīng)該有自己的一個(gè)緩沖區(qū)。maxElementsOnDisk: 硬盤最大緩存?zhèn)€數(shù)。diskPersistent: 是否緩存虛擬機(jī)重啟期數(shù)據(jù) Whether the disk store persists between restarts of the Virtual Machine. The default value is false.diskExpiryThreadIntervalSeconds:磁盤失效線程運(yùn)行時(shí)間間隔,默認(rèn)是120秒。memoryStoreEvictionPolicy: 當(dāng)達(dá)到maxElementsInMemory限制時(shí),Ehcache將會(huì)根據(jù)指定的策略去清理內(nèi)存。默認(rèn)策略是LRU(最近最少使用)。你可以設(shè)置為FIFO(先進(jìn)先出)或是LFU(較少使用)。clearOnFlush: 內(nèi)存數(shù)量最大時(shí)是否清除。--><!-- 默認(rèn)緩存 --><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>

三、編寫(xiě)工具類

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("獲取配置文件錯(cuò)誤:{}",e.getMessage());}}/*** 初始化緩存管理類* @return*/public static EhCacheUtil getInstance() {try {if (ehCache== null) {ehCache= new EhCacheUtil(PATH);}} catch (Exception e) {e.printStackTrace();log.error("初始化錯(cuò)誤:{}",e.getMessage());}return ehCache;}/*** 獲取Cache類* @param cacheName* @return*/public Cache getCache(String cacheName) {return manager.getCache(cacheName);}/*** 添加緩存數(shù)據(jù)* @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());}}/*** 獲取緩存數(shù)據(jù)* @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("獲取緩存數(shù)據(jù)失敗:{}",e.getMessage());return null;}}/*** 刪除緩存數(shù)據(jù)* @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("刪除緩存數(shù)據(jù)失敗:{}",e.getMessage());}} }

四、調(diào)用

1、存數(shù)據(jù)

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

2、取數(shù)據(jù)

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

3、刪除緩存

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/pengjf/p/11090924.html

總結(jié)

以上是生活随笔為你收集整理的springBoot整合Ehcache——工具类调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。