【发布时间】:2016-11-29 08:37:51
【问题描述】:
我们有一个新项目,我开始着手实施缓存机制。经过一番研究,JCache 似乎是显而易见的答案,但 Spring 也有缓存机制。我们正在使用 Spring(这肯定不会改变),因此如果它确保了更好的缓存机制,那么可以原谅依赖问题。
所以我的问题是,每个人的优缺点是什么?与 Spring 的实现相比,JCache 的功能是否相当有限?还是 JCache 现在被认为是新项目的前进方向?
【问题讨论】:
-
Spring 支持许多提供程序,包括 JCache(参见 35.6.5)docs.spring.io/spring/docs/current/spring-framework-reference/…(Spring 的实现非常基本 - 一个 HashMap,不支持 evict 等...)
-
在我看来,JCache 存在很大缺陷,我认为应该避免。当implementing an adapter 时,我对它的设计决策感到失望。问题包括竞争条件、试图强制执行较差算法的规范、令人反感的 API、难以实现良好性能的设计选择以及无效的 TCK。我不准备收集我的想法公开反对它,但我可以通过私人电子邮件提供其中一些。在您的情况下,您可能希望使用 Spring Cache 注释,因此 JCache 没有提供额外的价值。