Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JCache(JSR-107)与Spring缓存_Java_Spring_Caching - Fatal编程技术网

Java JCache(JSR-107)与Spring缓存

Java JCache(JSR-107)与Spring缓存,java,spring,caching,Java,Spring,Caching,我们有一个新的项目,我正在着手一个需要实现缓存机制的部分。在做了一些研究之后,JCache似乎是显而易见的答案,然而Spring也有一个缓存机制。我们正在使用Spring(这肯定不会改变),因此如果它确保了更好的缓存机制,那么依赖性问题可以被原谅 所以我的问题是,每个人的优点和缺点是什么?与Spring的实现相比,JCache的功能是否相当有限?还是JCache现在被认为是新项目的前进方向?这不是一个“vs”问题。这是一件“和”的事情。从- 与Spring框架中的其他服务一样,缓存服务 是一种抽

我们有一个新的项目,我正在着手一个需要实现缓存机制的部分。在做了一些研究之后,JCache似乎是显而易见的答案,然而Spring也有一个缓存机制。我们正在使用Spring(这肯定不会改变),因此如果它确保了更好的缓存机制,那么依赖性问题可以被原谅


所以我的问题是,每个人的优点和缺点是什么?与Spring的实现相比,JCache的功能是否相当有限?还是JCache现在被认为是新项目的前进方向?

这不是一个“vs”问题。这是一件“和”的事情。从-

与Spring框架中的其他服务一样,缓存服务 是一种抽象(不是缓存实现),需要使用 用于存储缓存数据的实际存储器,即抽象 使开发人员不必编写缓存逻辑,但是 不提供实际的商店。这个抽象由 org.springframework.cache.cache和 org.springframework.cache.CacheManager接口

有一些抽象的实现可以从 框:基于JDK java.util.concurrent.ConcurrentMap的缓存,Ehcache 2.x、Gemfire缓存、咖啡因、番石榴缓存和符合JSR-107的缓存(例如Ehcache 3.x)。参见第36.7节“插入不同的 “后端缓存”,了解有关插入其他缓存的更多信息 商店/供应商

例如,我使用HTTP会话

    @Bean
    public CacheManager cacheManager() {
        Map<String, Long> cacheExpiration = new HashMap<>();
        cacheExpiration.put(CACHE_RECOMMENDATION, ONE_HOUR);

        RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());
        redisCacheManager.setExpires(cacheExpiration);
        return redisCacheManager;
    }
@Bean
公共缓存管理器缓存管理器(){
Map cacheExpiration=新建HashMap();
cacheExpiration.put(缓存建议,一小时);
RedisCacheManager RedisCacheManager=新的RedisCacheManager(redisTemplate());
redisCacheManager.setExpires(缓存过期);
返回管理器;
}

Spring支持许多提供程序,包括JCache(参见35.6.5)(Spring的实现非常基本——一个HashMap,没有逐出支持,等等)。在我看来,JCache有很大的缺陷,我认为应该避免。当时我对它的设计决策感到失望。这些问题包括竞争条件、试图强制执行糟糕算法的规范、令人厌恶的API、难以使性能良好的设计选择,以及无效的TCK。我不准备收集我的想法来公开反对它,但我可以通过私人电子邮件提供其中一些想法。在您的情况下,您可能希望使用SpringCache注释,因此JCache不提供额外的值。