【问题标题】:Does spring boot support using both properties and yml files at the same time?spring boot 是否支持同时使用属性和 yml 文件?
【发布时间】:2014-10-03 14:39:50
【问题描述】:

我有一个 Spring Boot 应用程序,我想将 yml 文件用于我的应用程序属性,并使用一个普通的 application-${profile}.properties 文件集来配置我的应用程序。

所以我的问题是可以这样做吗?如果可以,如何配置 spring boot 以查找 yml 文件和属性并将它们合并到每个环境中的一组?

至于我为什么想要/需要同时使用两者,这是因为我喜欢 yml 文件的灵活性和易用性,但内部组件(用于加密)需要使用属性文件集。

我确实看到了这一点YAML files can’t be loaded via the @PropertySource annotation

但没有说明两者是否可以一起使用。

请提供详细配置(XML 或 Java 配置)以了解如何使其正常工作。

TIA,

斯科特

【问题讨论】:

    标签: java yaml configuration-files spring-boot properties-file


    【解决方案1】:

    我可以回答我自己的问题,因为它可以按您的预期工作。 application.yml 文件和相应的 application-${profile}.properties 都被加载并合并到环境中。 Spring Boot 让这项工作自然而然。

    【讨论】:

    • 我建议更新参考文档以澄清此答案是否正确。现在,指南中的语言使它听起来像是其中之一或两者兼而有之。让我知道我是否应该打开 JIRA 票证来更新此信息。
    • 我同意,这就是为什么我决定用谷歌搜索这件事并因此来到这里:)
    • @ScottC。是正确的。application.yml 和 application-{profile}.properties 正在合并。
    • 如果您同时拥有application.ymlapplication.properties 会怎样?
    • 你可以保留这两个文件,但属性文件稍后加载,并且如果在 yml 文件中也定义了相同的值,则可以覆盖这些值。
    【解决方案2】:

    是的,您可以在同一个项目中同时使用两者。

    • 当您同时使用 YML 和属性时,例如
      application.yml 和 application.properties 同时在同一个
      项目,稍后会加载第一个 application.yml
      application.properties 将被加载
    • 需要注意的重要一点是,如果 application.yml 和 application.properties 有 same keys 例如 application.ymlspring.app.name = testYMLapplication.properties 具有 spring.app.name = testProperties 同时 时间在同一个项目中,那么 application.yml 值将被覆盖 通过 application.properties 值,因为它最后加载。
    • 以及spring.app.name = testProperties中的值。

    【讨论】:

      【解决方案3】:

      是的,您可以在不进行任何配置的情况下同时运行两者。

      在 Spring Boot 中,它会按以下顺序选择 .properties 或 .yaml 文件:

      1. 应用程序-{profile}.{properties|yml}

      2. 应用程序。{properties|yml}

      【讨论】:

      • 这仅在优先级顺序上正确,但在首先加载的顺序上不正确。任何 application-profile.properties 都在 application.properties 之后加载。这就是您覆盖值的方式。如果您碰巧同时拥有两者,那么还会在属性之前读取 yml 。示例 application-profile.properties > application.properties > application.yml,其中 >(大于)表示左侧大于右侧。
      猜你喜欢
      • 1970-01-01
      • 2021-05-23
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 2017-09-25
      • 2019-06-04
      • 2019-09-17
      相关资源
      最近更新 更多