我们有一个新项目,我从一个需要实现缓存机制的部分开始。在做了一些研究之后,JCache似乎是明显的答案,但Spring也有一个缓存机制。我们正在使用Spring(并且肯定不会改变)所以如果确保更好的缓存机制,依赖性问题可以被原谅。
所以我的问题是,每个人的专业和意见是什么?与Spring的实现相比,JCache的功能是否有限?或者JCache现在被认为是未来新项目的方式吗?
答案 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;
}