请教高手, Java 缓存接口标准 JSR-107 为啥设计的这么莫名其妙

2018-04-12 10:19:16 +08:00
 abcbuzhiming
我本来打算在新项目上这个玩意的,但是对比了 JCache annotations 里的 @CacheResult 和 @CachePut 和 Spring 传统的 @Cacheable 和 @CachePut 的区别以后,发现 JCache 的 key 生成方法实在是太烦人了,不能像 spring 传统那样直接就能定义 key 名称,而且很灵活,可以很容易的实现“自定义字符”+参数值的设计,然而 JCache annotations 你得自己去实现一个 Classs,麻烦要死。为啥搞这么麻烦,有啥好处吗
4211 次点击
所在节点    Java
7 条回复
hantsy
2018-04-12 10:41:06 +08:00
KuroNekoFan
2018-04-12 10:56:03 +08:00
写 java,就是要一种仪式感
abcbuzhiming
2018-04-12 10:58:03 +08:00
@hantsy 谢谢提供范例,我知道 spring 支持,我只是觉得 JSR107 为啥要设计的这么“反人类”?
lihongjie0209
2018-04-12 11:12:50 +08:00
“自定义字符”+参数值的设计 这不就是一个 Key 生成器吗, 只是 sping 帮你写了而已, 如果你需要更高级的功能,我相信 Spring 可以自定义吧
chocotan
2018-04-12 15:31:03 +08:00
abcbuzhiming
2018-04-12 15:54:04 +08:00
@chocotan 谢了,看来他们自己也意识到这个实现是多么的难用
hantsy
2018-04-12 16:39:39 +08:00
@chocotan 那个只是列举了一个 SPEL 的优势。Java EE 标准中的 EL 3.0 ( Java EE 8 中没更新)
功能上应该会强大些,只是现在各标准没有深度集成,目前就我的使用情况,只有 JSF 是深度集成的(毕竟是从 JSF 中分离出来的),Java EE Security API 1.0 ( Java EE 8 新增规范) 的 Annotation 也是支持的。

但我不知道用 Class 作 Key 有什么不好,至少它是 Typesafe。

到了 Java 5, 项目中都是尽量用 Typesafe 代替 literal 形式配置,像这几年的项目连查询都必须要用 Typesafe,比如, 用 JPA Certria API,QueryDSL,JOOQ 等,至于 JPQL,SQL 拼接都是绝对不允许使用的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX