V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX  ›  Java

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

  •  
  •   abcbuzhiming · 2018-04-12 10:19:16 +08:00 · 4226 次点击
    这是一个创建于 2449 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我本来打算在新项目上这个玩意的,但是对比了 JCache annotations 里的 @CacheResult 和 @CachePut 和 Spring 传统的 @Cacheable 和 @CachePut 的区别以后,发现 JCache 的 key 生成方法实在是太烦人了,不能像 spring 传统那样直接就能定义 key 名称,而且很灵活,可以很容易的实现“自定义字符”+参数值的设计,然而 JCache annotations 你得自己去实现一个 Classs,麻烦要死。为啥搞这么麻烦,有啥好处吗
    7 条回复    2018-04-12 16:39:39 +08:00
    hantsy
        1
    hantsy  
       2018-04-12 10:41:06 +08:00
    KuroNekoFan
        2
    KuroNekoFan  
       2018-04-12 10:56:03 +08:00
    写 java,就是要一种仪式感
    abcbuzhiming
        3
    abcbuzhiming  
    OP
       2018-04-12 10:58:03 +08:00
    @hantsy 谢谢提供范例,我知道 spring 支持,我只是觉得 JSR107 为啥要设计的这么“反人类”?
    lihongjie0209
        4
    lihongjie0209  
       2018-04-12 11:12:50 +08:00   ❤️ 1
    “自定义字符”+参数值的设计 这不就是一个 Key 生成器吗, 只是 sping 帮你写了而已, 如果你需要更高级的功能,我相信 Spring 可以自定义吧
    chocotan
        5
    chocotan  
       2018-04-12 15:31:03 +08:00
    abcbuzhiming
        6
    abcbuzhiming  
    OP
       2018-04-12 15:54:04 +08:00
    @chocotan 谢了,看来他们自己也意识到这个实现是多么的难用
    hantsy
        7
    hantsy  
       2018-04-12 16:39:39 +08:00   ❤️ 2
    @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 拼接都是绝对不允许使用的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.