Guava之controller中使用缓存cache
来源:互联网 发布:怎样用dos运行java文件 编辑:程序博客网 时间:2024/05/17 07:36
之前介绍过的Guava这个工具包中有很多方便的用法,下面要使用它封装的Cache来实现功能.
示例:
import com.google.common.cache.CacheBuilder;import com.google.common.cache.CacheLoader;import com.google.common.cache.LoadingCache;import org.joda.time.DateTime;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;import java.util.concurrent.TimeUnit;@RestController@RequestMapping("/hello")public class HelloController {private static Logger logger = LoggerFactory.getLogger(HelloController .class);public static LoadingCache<String,Object> cacheBuilder;@Autowiredprivate OverviewService overviewService;static OverviewParameter op ;@RequestMapping(value="/hh",method=RequestMethod.GET)public Result<?> sayHello(OverviewParameter overviewParameter){Result<?> result = null;setOviewParameter(overviewParameter);ObjectResultEx<SummaryVo> resObj = (ObjectResultEx<SummaryVo>) getDataInCache("summary", overviewParameter);...return result;}/** * 根据键值获取缓存中的数据 */private Object getDataInCache(final String key, OverviewParameter overviewParameter){logger.info("before refresh cache, key:{}, param:{}",key, JSONObject.toJSONString(overviewParameter));op = overviewParameter;try {if ((cacheBuilder != null) && ((ObjectResultEx) cacheBuilder.get(key)).isSuccess()){return cacheBuilder.get(key); }else {return commonCache(new CacheLoader<String, Object>() {@Overridepublic Object load(String key) throws Exception {logger.info("refresh cache, key:{}, param:{}",key, JSONObject.toJSONString(op));switch (key){case "summary":return overviewService.overviewSummary(op);case "grantNums":return overviewService.overviewGrantNums(op);case "creditNums":return overviewService.overviewCreditNums(op);case "riskNums":return overviewService.overviewRiskNums(op);default:return new ObjectResultEx<>().makeFailedResult();}}}).get(key);}} catch (Exception e) {logger.error("获取缓存中的数据出错", e);}return new ObjectResultEx<>().makeFailedResult();}/** * 为缓存设置loader */private LoadingCache<String, Object> commonCache(CacheLoader<String, Object> loader) {synchronized (logger){cacheBuilder = CacheBuilder.newBuilder().refreshAfterWrite(1, TimeUnit.MINUTES).build(loader);}return cacheBuilder;}}
阅读全文
0 0
- Guava之controller中使用缓存cache
- Google Guava之--cache 使用
- Guava中Cache的使用
- 本地缓存实现之Guava Cache
- [Java 缓存] Java Cache之 Guava Cache的简单应用.
- [Java 缓存] Java Cache之 Guava Cache的简单应用.
- Guava Cache缓存
- Guava cache实现本地缓存
- Guava Cache的缓存统计
- Guava Cache缓存容量管理
- Guava Cache实现本地缓存
- Guava Cache之Cache接口
- Google Guava之--cache
- Google Guava之--cache
- Guava学习之cache
- guava cache使用例子
- Guava Cache使用笔记
- Guava Cache使用
- C++ 修饰符const、static、extern、ref、volatile、explicit总结
- Groovy学习:第四章 Groovy特性深入
- jQuery部分疑问及小结
- 深度学习数据整理——Python读写xml文件
- 今日头条开通,分享我爱的数码科技
- Guava之controller中使用缓存cache
- 高内聚低耦合的介绍
- 区别:javascript:void(0);javascript:;
- Spring学习笔记(7)——Bean的基本配置
- Spring学习笔记(4)——IoC学习
- Spring学习笔记(8)——依赖注入
- Spring学习笔记(13)——aop原理及拦截器
- 噪 声
- Java中使用File类删除文件夹和文件