博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava库学习:学习Guava Cache(四)CacheBuilderSpec
阅读量:6551 次
发布时间:2019-06-24

本文共 1940 字,大约阅读时间需要 6 分钟。

hot3.png

    原文地址:

    上一篇,中, 我们学习并了解了使用CacheBuilder方便的构造Cache和LoadingCache实例,我们可以通过CacheBuilder提供的 newBuilder()方法,使用建造者模式构建CacheBuilder实例,另外Guava Cache提供了CacheBuilderSpec类创建CacheBuilder实例,接下来,我们就来开始Guava Cache:CacheBuilderSpec的学习。

 

    CacheBuilderSpec类以解析代表CacheBuilder配置的字符串的形式来创建CacheBuilder实例,需要说明的 是,Guava没有处理编译时异常,这将会导致当传入的字符串无效时,会出现编译时异常,下面是一个可以用来创建CacheBuilderSpec实例的 有效字符串:

//配置CacheBuilder的字符串String configString = "concurrencyLevel=10,refreshAfterWrite=5s";

     通过上面的字符串,我们可以创建一个与 中 最后一个例子相同的CacheBuilder实例,通过一些方法来指定时间(refreshAfterWrite,expireAfterAccess, 等等),间隔的整数后面的‘s’,‘m’,‘h’或‘d’对应于秒,分钟,小时或天数,这里没有毫秒甚至纳秒级别的设置,当我们指定好了配置的字符串,我 们可以通过下面的方式创建一个CacheBuilderSpec实例:

//解析字符串,创建CacheBuilderSpec实例CacheBuilderSpec spec = CacheBuilderSpec.parse(configString);

    我们可以通过下面的方式,使用CacheBuilderSpec实例创建CacheBuilder实例:

//通过CacheBuilderSpec实例构造CacheBuilder实例CacheBuilder.from(spec);

    这里,我们调用了CacheBuilder中的静态from方法,使用CacheBuilderSpec 对象构造了CacheBuilder实例,通过格式化的字符串设置了CacheBuilder的属性,我们可以使用返回的CacheBuilder实例, 像我们之前一样调用一些适当的方法,比如添加一个RemovalListener或者通过CacheBuilder创建一个LoadingCache实 例:

//配置CacheBuilder的字符串String spec = "concurrencyLevel=10,expireAfterAccess=5m,softValues";//解析字符串,创建CacheBuilderSpec实例CacheBuilderSpec cacheBuilderSpec = CacheBuilderSpec.parse(spec);//通过CacheBuilderSpec实例构造CacheBuilder实例CacheBuilder cacheBuilder = CacheBuilder.from(cacheBuilderSpec);//ticker:设置缓存条目过期时间//removalListener:监听缓存条目的移除cacheBuilder.ticker(Ticker.systemTicker())        .removalListener(new TradeAccountRemovalListener())        .build(new CacheLoader
() {            @Override            public TradeAccount load(String key) throws                    Exception {                return                        tradeAccountService.getTradeAccountById(key);            }        });

    上面的例子中,我们注册了一个Ticker实例和RemovalListener实例,通过build方法指定了一个CacheLoader,以字符串方式使用CacheBuilderSpec用于示例的演示目的,通常情况下,这个字符串将从命令行输入,或来自于配置文件的读取。

    代码地址:

转载于:https://my.oschina.net/realfighter/blog/353038

你可能感兴趣的文章
使用 xampp-部署php网站
查看>>
一个脚本测试系统环境变量配置文件的启动顺序
查看>>
Java零碎知识
查看>>
lync客户端外网登陆提示exchange连接错误
查看>>
Hadoop 技术在电信运营商上网日志处理中的应用架构
查看>>
文件存储
查看>>
ubuntu安装tomcat7
查看>>
[python]列表的操作
查看>>
lsof入门
查看>>
linux温故知新九
查看>>
刘宇凡:史玉柱退休给年轻人的启示
查看>>
我的友情链接
查看>>
oracle数据库中由于没有做任何约束,如何删掉表中重复的记录
查看>>
挨踢项目求生法则(8)——计划篇
查看>>
C#关键字列表
查看>>
Javascript ES6中的箭头函数
查看>>
复制虚拟机出现网卡冲突的解决方案
查看>>
mysql 增查删改,备份恢复,授权等基础常用命令
查看>>
Python 多线程,文件io
查看>>
我的友情链接
查看>>