我们有一个新项目,我将从需要实现缓存机制的部分开始。经过研究后,JCache似乎是显而易见的答案,但是Spring也具有缓存机制。我们正在使用Spring(并且肯定不会改变),因此,如果可以确保更好的缓存机制,则可以避免依赖问题。

所以我的问题是,每个人的利弊是什么?与Spring的实现相比,JCache的功能是否受到限制?还是现在考虑将JCache视为新项目的前进方向?

最佳答案

这不是“VS”的事情。这是“和”的事情。从manual-

就像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节“以不同方式插入”
后端缓存”以获取有关插入其他缓存的更多信息
商店/提供者。

作为示例,我将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;
    }

10-06 06:52