建设网站 目标,成都工程建设信息网站,网页内嵌网站,百度搜索排行seo在JCache中#xff0c;有一个方便的功能可以透明地缓存方法的结果。 您可以使用CacheResult注释托管bean的方法#xff0c;并且将再次返回第一次调用的结果#xff0c;而无需再次调用实际方法。 import javax.cache.annotation.CacheResult;
// ...public class Calculator… 在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, its 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指定拦截器 interceptorsclassorg.infinispan.jcache.annotation.CacheResultInterceptor/class
/interceptors WildFly使用Infinispan该Infinispan也需要以正确的版本添加到pom.xml中。 dependencygroupIdjavax.cache/groupIdartifactIdcache-api/artifactIdversion1.0.0/version
/dependency
dependencygroupIdorg.infinispan/groupIdartifactIdinfinispan-jcache/artifactIdversion8.2.4.Final/version
/dependency翻译自: https://www.javacodegeeks.com/2017/12/caching-method-results-jcache.html