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

spring initializr 默认配置为什么用 properties 而不是 yml?

  •  
  •   dunhanson · 2022-12-07 19:31:25 +08:00 · 2551 次点击
    这是一个创建于 718 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看包管理都改成 Gradle 了

    配置文件管理这种,yml 不是更新,更灵活吗?

    有点无法理解

    18 条回复    2023-03-19 10:52:33 +08:00
    jeesk
        1
    jeesk  
       2022-12-07 19:45:14 +08:00
    这个 initializer 可以选择?
    dunhanson
        2
    dunhanson  
    OP
       2022-12-07 19:46:43 +08:00
    @jeesk 没看到有
    dcsuibian
        3
    dcsuibian  
       2022-12-07 19:47:46 +08:00
    .properties 历史比较久吧
    我一般初始化后第一件事就是把 application.properties 重命名成 application.yml
    dunhanson
        4
    dunhanson  
    OP
       2022-12-07 19:53:46 +08:00
    @dcsuibian 我是在想 spring 是不是有什么考虑?这个考虑点我们不清楚
    wzcloud
        5
    wzcloud  
       2022-12-07 20:15:47 +08:00
    历史包袱呗,还能因为啥,java 官方支持的配置格式就是 properties
    git00ll
        6
    git00ll  
       2022-12-07 20:16:39 +08:00
    虽然 yml 更灵活,但也更显得乱
    me221
        7
    me221  
       2022-12-07 20:22:57 +08:00
    我也好奇.

    几乎所有的文档, 博客都是 yml. 但是这么多年 initializer 还是 properties
    jptx
        8
    jptx  
       2022-12-07 21:01:57 +08:00   ❤️ 1
    翻了下,早在 2015 年就有人提了这个问题,想把配置文件默认格式改为 yml 。也有人建议增加一个选项,用来控制配置文件是.properties 格式还是.yml 格式。但是 Snicoll ( Spring 官方核心研发)说暂时不打算切换,因为 IDE 对 yml 格式的支持没达到很强的水平,相比 properties 格式的支持根本不在同一个级别上。直到 2018 年又有人提了这件事,Snicoll 还是觉得 IDE 目前对 yml 支持的不太好,不愿意切换。

    相关讨论 Issue:
    https://github.com/spring-io/initializr/issues/94
    https://github.com/spring-io/initializr/issues/614
    binge921
        9
    binge921  
       2022-12-07 21:09:05 +08:00
    Spring Initializr 默认使用 properties 文件来存储配置信息,因为它更简单易读,并且容易理解。YAML 文件在复杂的配置场景下可能更方便,但它的语法要比 properties 文件复杂得多,并且不太容易阅读。因此,Spring Initializr 默认使用 properties 文件作为配置文件。
    v2e0xAdmin2
        10
    v2e0xAdmin2  
       2022-12-07 21:10:33 +08:00
    @binge921 chatGPT 吗😂
    leaflxh
        11
    leaflxh  
       2022-12-07 22:06:03 +08:00
    @v2e0xAdmin2 句式都一个德行,机器人的语言组织能力还是得再学习一个
    LeegoYih
        12
    LeegoYih  
       2022-12-07 23:09:05 +08:00
    yaml 配置超过一页后可读性大大下降,写 OpenAPI 的时候很难受
    dunhanson
        13
    dunhanson  
    OP
       2022-12-08 08:42:29 +08:00
    @wzcloud @jptx @binge921 k8s 的配置文件都是 yml 或者 json
    nothingistrue
        14
    nothingistrue  
       2022-12-08 09:23:46 +08:00
    Spring Boot 的配置文件,不是 properties 或 yml ,而是 properties 和 “yml 自动映射 properties”。而整套配置体系,是 properties 和 “yml 、环境变量、JVM 参数等等自动映射 properties”。如果你往细节追踪,你会发现里面有好多东西仅面向 properties 。所以除非到了不得不用 yml 的情况,它的默认配置文件只能是 properties 。

    你要深入看下 Spring 的文章,你就会知道,包管理改 Gradle ,原因只是 Maven 性能跟不上了不得不用 Gradle 。
    wzcloud
        15
    wzcloud  
       2022-12-08 10:31:27 +08:00
    @dunhanson 都说了历史包袱。。。你自己了解一下 JAVA 什么时候出来的,spring 什么时候出来的,kubernetes 又是什么时候出来的
    threeroseing0
        16
    threeroseing0  
       2022-12-08 11:16:56 +08:00
    为什么都觉得 yml 好
    在 Spel 表达式搜索的时候真感觉还是 properties 方便啊😂
    goalidea
        17
    goalidea  
       2022-12-10 12:41:16 +08:00
    说明你只是参与开发,用 properties 为了给部署人员方便,运维人员主要是对配置文件复制粘贴,yaml 复制粘贴出错,而且不容易排错,所以一般上线给运维都是改成 properties
    chachae
        18
    chachae  
       2023-03-19 10:52:33 +08:00 via iPhone
    yml 纯属是被 k8s 带火的,实际上可读性不如 properties ,而且出问题不容易排查,譬如重复 key ,格式错误等等的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1579 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:49 · PVG 00:49 · LAX 08:49 · JFK 11:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.