Ehcache怎样在Element级上控制过期时间

2019-09-28 07:54:29

试着去寻找在ehcache由代码控制失效时间,没有找到,我也以为,ehcache希望用户能根据不同cache config去配置应用。而不应该应用到element级别上

CacheManager ehCacheManager = new CacheManager();
ehCacheManager.addCache("default");
Ehcache cache = ehCacheManager.getCache("default");
Element e = new Element("aa", "aa", false, 1, 1);
cache.put(e);
System.out.println(cache.get("aa"));

Thread.sleep(1050);

System.out.println(cache.get("aa"));//如果这个时候,期待cache是否过期。但是实际的情况是。ehcache依然能获取到相关数据.

 

当你去调用ehcache.put动作时,会调用applyDefaultsToElementWithoutLifespanSet(element);

方法内容:

 if (!element.isLifespanSet()) {
            //Setting with Cache defaults
            element.setTimeToLive((int) configuration.getTimeToLiveSeconds());
            element.setTimeToIdle((int) configuration.getTimeToIdleSeconds());
            element.setEternal(configuration.isEternal());
        }

 

 

Element里面有一个isLifespan的参数,默认是为false的。。
false的时候.Ehcache会element的过期时间设置为默认配置的


当你通过new  Element(Object key, Object value,
                   boolean eternal, int timeToIdleSeconds, int timeToLiveSeconds)

去实例化的时候。。根本不会去设置isLifespan这个参数,而是采用默认的过期策略的。。


但是去调用element 的。setTimeToLive,setTimeToIdle,setEternal方法时,

确会去设置这个参数。。


Element.setEternal(boolean eternal) {
        this.eternal = eternal;
        lifespanSet = true;
    }

这样的话。。就会去单独去设置Element控制过期时间,而不会用默认的配置去覆盖设置.

 

 

个人觉得这个ehcache存在的一个BUG。。

既然在调用element 的。setTimeToLive,setTimeToIdle,setEternal方法时,会去设置这个参数,那么如果在构造的时候也应该调用这些方法。

但是有可能ehcache希望用户能根据不同cache config去配置应用。而不应该应用到element级别上


  • 2020-02-24 18:36:17

    百度地图做电子围栏总结

    需求:在地图上画出围栏,设置围栏信息后保存,生成围栏列表。全选时,地图视野可看到全部的围栏区域,单独勾选会调整地图视野到当前勾选的围栏。围栏区域的中心点要显示围栏名称。

  • 2020-02-24 18:37:17

    百度地图绘制轨迹点

    没有后台获取事实信息 都是伪数据- -轨迹信息做不到事实导航。 控件可以根据自己的需求添加 位置通过offset:new BMAP.Size(x,y)进行微调 事实路况信息需要通过引没有后台获取事实信息 都是伪数据- -轨迹信息做不到事实导航。 控件可以根据自己的需求添加 位置通过offset:new BMAP.Size(x,y)进行微调 3D视图部分城市没有开放开放 根据需求自己添加

  • 2020-02-24 18:43:54

    百度地图JS关于规划路线偏离预警的解决方式

    说实在的这个解决方案有点low,我并不会很赞成,效率有点低。如果多的话,很是耗费资源。 我推荐使用矩形来解决这个问题,而不是圆形。 当日用矩形的话,就要确保轨迹是折线的,而不是弧线等。

  • 2020-02-24 18:45:33

    巧妙解决百度地图加偏纠偏问题

    所谓的加偏,就是将真实坐标加上一定的偏移量,而这个偏移量又不是线性的,不同地区偏移不一样,但同一地区偏移量却差不多,因此,有人就使用了个暴力破解的方法,

  • 2020-02-24 18:48:34

    规划驾车路线和途径点及判断车辆路线偏移

    项目需求需要利用百度地图构建路线并支持设置途径点,以及可以实时监控车辆是否偏移路线;两种方案。 写了比较完整的注释了,替换ak可直接看效果,规划驾车路线和途径点及判断车辆路线偏移

  • 2020-02-25 15:15:56

    nuxtjs全栈

    Nuxt.js 依据 pages 目录结构自动生成 vue-router 模块的路由配置。 要在页面之间使用路由,我们建议使用<nuxt-link> 标签。

  • 2020-02-25 19:24:08

    IDEA 简单的正则匹配

    IDEA在进行查看或替换的时候,勾选Regex 选项就可以进行正则匹配查找了 几个简单实用的正则: