JCache(JSR-107)vs Spring Cache

时间:2016-01-19 17:37:02

标签: java spring caching

我们有一个新项目,我从一个需要实现缓存机制的部分开始。在做了一些研究之后,JCache似乎是明显的答案,但Spring也有一个缓存机制。我们正在使用Spring(并且肯定不会改变)所以如果确保更好的缓存机制,依赖性问题可以被原谅。

所以我的问题是,每个人的专业和意见是什么?与Spring的实现相比,JCache的功能是否有限?或者JCache现在被认为是未来新项目的方式吗?

1 个答案:

答案 0 :(得分:1)

它不是' vs'事情。它是'和'事情。来自manual -

  

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

     

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

作为示例,我使用RedisCacheManager进行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;
    }