首页 > 其他分享 >Ehcache 2升级到Ehcache 3的改动点

Ehcache 2升级到Ehcache 3的改动点

时间:2024-01-27 21:32:21浏览次数:29  
标签:Ehcache 改动 Cache String cache manager 升级 cacheName

本文总结了Ehcache 2升级到Ehcache 3的改动点。

Ehcache 2升级到Ehcache 3的改动点


1. 包名更改

Ehcache 2包名如下:

import net.sf.ehcache.Cache;

Ehcache 3包名如下:

import org.ehcache.Cache;

2. 配置文件

Ehcache 2配置文件如下:

<ehcache>

    <diskStore path="java.io.tmpdir"/>

    <defaultCache
        maxEntriesLocalHeap="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        maxEntriesLocalDisk="10000000"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
        <persistence strategy="localTempSwap"/>
    </defaultCache>

</ehcache>

Ehcache 3配置文件如下:

<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-template name="example">
        <key-type>java.lang.Long</key-type>
        <value-type>java.lang.String</value-type>
        <heap unit="entries">200</heap>
    </cache-template>
</config>

Ehcache 2 初始化配置方式如下:

try (InputStream fis = this.getClass().getResourceAsStream("/config/ehcache.xml")) {
    manager = new CacheManager(fis);
}

Ehcache 3初始化配置方式如下:

final URL myUrl = getClass().getResource("/configs/ ehcache.xml ");

XmlConfiguration xmlConfig = new XmlConfiguration(myUrl);

CacheManager myCacheManager = CacheManagerBuilder.newCacheManager(xmlConfig);

3. CacheManager类

Ehcache 2的CacheManager有addCacheIfAbsent方法。

public Cache getCacheAddIfAbsent(String cacheName) {

    Cache cache = manager.getCache(cacheName);

    if (cache == null) {
        synchronized (EhcacheManager.class) {
            manager.addCacheIfAbsent(cacheName);
            cache = manager.getCache(cacheName);
        }
    }

    return cache;

}

Ehcache 3的CacheManager没有addCacheIfAbsent方法,需自己实现。

private CacheManager manager;

public Cache getCacheAddIfAbsent(String cacheName) {

    Cache cache = manager.getCache(cacheName, String.class, Object.class);

    if (cache == null) {
        try {
            cache = manager.createCache(cacheName, configurationBuilder);
        } catch (IllegalArgumentException e) {
            //cache already exists
            LOGGER.info("cache {} already exists", cacheName);
            cache = manager.getCache(cacheName, String.class, Object.class);
        }
    }

    return cache;

}

4. 没有了Element的概念

Ehcache 3已经没有了net.sf.ehcache.Element的概念。

Ehcache 2从缓存获取值的方式如下:

Cache cache = ……;

Element element = cache.get("key1");

Serializable value = element.getValue();

Ehcache 3从缓存获取值的方式如下:

Cache< String, String> myCache = ……;

String value = myCache.get("key1");

Ehcache 3没有了Element这个中间对象,用法上更加简洁。


标签:Ehcache,改动,Cache,String,cache,manager,升级,cacheName
From: https://blog.51cto.com/lenglingx/9445205

相关文章

  • 初识EHCache缓存框架(3.10.8版本)
    https://www.ehcache.org/documentation/3.10/xml.html引入依赖<!--https://mvnrepository.com/artifact/org.ehcache/ehcache--><dependency><groupId>org.ehcache</groupId><artifactId>ehcache</artifa......
  • 佳能F-789SGA升级与超频——互联网Tips存档
    佳能F-789SGA简介佳能F-789SGA是一款性价比极高的科学函数计算器,功能与卡西欧fx-991ES近似,稍强于991ES,弱于991CNX。来自電卓院亜紀良的评价来自杨高峰的对比总结来自贴吧光卡的注意事项参考来源1参考来源2佳能F-789SGA升级792S简单地说,小心拆开后盖,移除R6......
  • centos升级系统内核及升级系统版本
    查看版本[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.5.1804(Core)查看内核版本[root@localhost~]#uname-r3.10.0-862.el7.x86_64[root@localhost~]#  ###准备升级内核到7.9系统的内核 虚拟机新增一个cdrom,然后将iso镜像挂载上去[root@lo......
  • MySQL 8 版本升级
    升级过程中,安装一个新版本的MySQL版本可能需要升级以下这些内容:mysqlschema。mysql库中的表主要分成两类:数据字典表,即存储数据库对象元数据;系统表,即存储非数据字典表,用于其它操作用途其它schema。内嵌的(比如performance_schema、information_schema、ndbinfo、sys)或用户......
  • redis 7.07升级导致spring boot连接不上
    Causedby:org.springframework.data.redis.connection.PoolException:Couldnotgetaresourcefromthepool;nestedexceptionisio.lettuce.core.RedisConnectionException:Unabletoconnect升级springboot、升级jedis<parent> <groupId>org.springfram......
  • ESXI VIB升级报错
    一、兼容性问题1、通过VIB升级ESXI时,可能会出现类似的报错2、此报错是由于已安装的VIB软件版本与升级版本兼容性存在问题,可以先根据上述报错进行查找3、移除不兼容条目4、提示移除成功后即可继续升级5、提示升级成功。......
  • 《安富莱嵌入式周报》第331期:单片机实现全功能软件无线电,开源电源EEZ升级主控,ARM 汇编
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 目录:1、单片机实现低配版全功能软件无线电,范围0.5-30MHz,支持SSB、AM、FM和CW2、TI整理的ARM汇编用户指南3、ADI差分链路的SPI扩展器LTC4332,支持1200米4、开源串口,SPI,I......
  • vue2.x项目升级到2.7
    背景老代码库了,但是升级到v3的话成本比较大,准备先升级到2.7,用上compositon-api,后续再引入ts,慢慢改过来。改动点//package.json{..."vue":"^2.7.0",..."vue-template-compiler":"^2.6.10",//移除掉,用不上了"vue-loader":"^15.10.0&quo......
  • [转]vs2019升级后,启动调试,谷歌浏览器无法正常使用 - 温故纳新 - 博客园
    解决方法:vs2019按如下步骤设置:工具  =》 选项  =》调试 =》 常规 =》勾选“启用APS.NET 的 Javascript 调试(Chrome和IE)”---------------------作者:温故纳新来源:CNBLOGS原文:https://www.cnblogs.com/tomorrow0/p/14383870.html版权声明:本文为作者原创文章,转载请......
  • 媒体声音|PolarDB 再升级:欢迎来到云数据库 x AI 新时代
    以下文章来源于产业家,作者产业媒体 作者|思杭编辑|皮爷出品|产业家 “搭积木”、“自动驾驶”、“三层解耦”,这些形象的标签成了1月17日阿里云开发者生态大会当天最出圈的词汇。 会上,一名小学生受邀上台演示了数据库查询的场景。一种“全民编程”的气氛向现场观众......