在JCache中,有一个方便的功能可以透明地缓存方法的结果。 您可以使用@CacheResult注释托管bean的方法,并且将再次返回第一次调用的结果,而无需再次调用实际方法。

import javax.cache.annotation.CacheResult;
// ...public class Calculator {@CacheResultpublic String calculate() {// do some heavy lifting...LockSupport.parkNanos(2_000_000_000L);return "Hi Duke, it's " + Instant.now();}
}

如果注入了bean并调用了方法calculate ,则结果将在第一次调用后被缓存。 默认情况下,此机制不缓存并返回异常。

我们可以将计算器包含在JAX-RS资源中,如下所示:

@Path("calculation")
public class CalculationResource {@InjectCalculator calculator;@GETpublic String calculation() {return calculator.calculate();}
}

调用该HTTP资源将为所有后续调用返回相同的值。

为了使该示例在Java EE应用程序服务器中运行,我们现在必须声明负责缓存结果的拦截器。 这是由于EE伞中未包含JCache。 因此,目前需要完成这种小的配置开销。

如果要在WildFly中运行此示例,请在beans.xml指定拦截器:

<interceptors><class>org.infinispan.jcache.annotation.CacheResultInterceptor</class>
</interceptors>

WildFly使用Infinispan,该Infinispan也需要以正确的版本添加到pom.xml中。

<dependency><groupId>javax.cache</groupId><artifactId>cache-api</artifactId><version>1.0.0</version>
</dependency>
<dependency><groupId>org.infinispan</groupId><artifactId>infinispan-jcache</artifactId><version>8.2.4.Final</version>
</dependency>

翻译自: https://www.javacodegeeks.com/2017/12/caching-method-results-jcache.html

使用JCache缓存方法结果相关推荐

  1. java 缓存方法_Java实现一个简单的缓存方法

    Java实现一个简单的缓存方法 发布时间:2020-09-07 21:39:55 来源:脚本之家 阅读:99 作者:BrightLoong 缓存是在web开发中经常用到的,将程序经常使用到或调用到的对 ...

  2. 强制清理CDN(DNS)缓存方法

    强制清理CDN(DNS)缓存方法/步骤 1.打开命令对话框:开始--cmd--确定 2.在CMD命令操作框上输入清空DNS缓存的命令,命令为:ipconfig/flushdns ,然后回车即可清除DN ...

  3. android h5游戏图片不缓存,H5小游戏资源缓存方法与流程

    本发明涉及H5资源缓存领域,尤其涉及H5小游戏资源缓存方法. 背景技术: 随着移动互联网的发展和手机硬件性能的不断提升,H5小游戏这种不需要下载安装即可使用的全新游戏应用得到了爆发式发展.这种用完即走 ...

  4. Firefox和IE浏览器清除缓存方法

    工具 =>Internet选项 =>浏览历史记录 =>删除 =>选中Internet临时文件夹 =>确定 请仔细对照上图,删除缓存避免调试程序时不刷新问题. Firefo ...

  5. 常见浏览器清理缓存方法

    各大常见浏览器清理缓存方法 360浏览器: https://jingyan.baidu.com/article/fedf0737486f2b35ac89772e.html 360极速浏览器:https ...

  6. 微信内置浏览器清理缓存方法

    目前感觉大部分所接触过的项目,目标用户几乎都是使用微信浏览器打开的,在一定程度来说,发布测试版还有本地测试的过程中,微信这种怎么也清不掉的缓存真的很烦人. 下面直入正题, 给出清除微信浏览器缓存的终极 ...

  7. php 微信怎么清除缓存,前端清除缓存方法(微信缓存引起的bug)

    bug1:在新版微信中,部门安卓机子(华为)出现window.location.href/window.location.reload....等方法来刷新本页面链接,发现页面没有被刷新,经过排查,发现 ...

  8. 谷歌浏览器设置缓存方法

    谷歌浏览器设置缓存方法: 1.在桌面Google Chrome快捷方式,目标: 找到 C:\Users\Splendid\AppData\Local\-\Application\chrome.exe ...

  9. Final Cut Pro X 清除缓存方法

    当我们制作完视频时候,会发现源文件想当大,我这个128的Mac Pro 根本无法吃消,必须给它来个猪变猴子大瘦身. 清除缓存方法 打开FCPX,选择资源库,右键在访达中显示,如图: 选择源文件,右键显 ...

最新文章

  1. 谷歌发布TensorFlow Privacy​:大幅提升AI模型中的隐私保护
  2. AI 迎来重要发展契机,开发者的机会在哪里?
  3. 用指针式万用表欧姆档检测发光二极管
  4. 单片机学习应用六大重要部分
  5. python三十五:pickle模块
  6. linux c语言链表的简单应用之创建链表
  7. centos7.5 使用报错:用户名 不在 sudoers文件中,此事将被报告。
  8. Oracle EBS - Forms Servlet与Socket模式比较
  9. 华为笔记本搭载鸿蒙系统,华为MatePad Pro2入网!预装鸿蒙系统 搭载麒麟9000
  10. 哪些事是你当了大学老师之后才知道的?
  11. ACL访问控制列表【笔记|实验】
  12. Git 提交错了不用慌,这三招帮你修改记录
  13. javaweb几种常见乱码问题解决
  14. 【阿里图标库的使用】
  15. vscode管理员身份运行powershell
  16. MyBatis常见问题
  17. java控制台如何输入一段代码
  18. 离线语音远程遥控车控门制作教程(二)
  19. 一文读懂BLOB算法
  20. iconfont的使用,阿里矢量图库的引用,配置,改变图标大小和图标颜色

热门文章

  1. 集合框架 Queue---ArrayBlockingQueue
  2. Java基于socket服务实现UDP协议的方法
  3. 图说:为什么Java中的字符串被定义为不可变的
  4. Java架构师必看的10本书
  5. JDK8之新特性扩展篇
  6. 你可能不知道的 10 条 SQL 技巧
  7. java实现人脸识别源码【含测试效果图】——实体类(Users)
  8. Ajax基本案例详解之$.post的实现
  9. SpringBoot运行原理初探
  10. jvm(8)-虚拟机字节码执行引擎