java - 覆盖 YAML 中的属性

标签 java spring properties

我有一个第三方库,正在使用 important-config.yaml 文件进行配置。

prop1: value1
prop2: value2(need to override)
prop3: value3

为了引用它,我在 application.properties 中有下一行:

important-config=classpath:important-config.yaml

yaml 文件中有一个属性取决于应用程序运行的环境。所以我需要在启动时覆盖这个属性。我怎样才能做到这一点?

最佳答案

我可以看到三种合适的变体来解决它:

  1. 直接覆盖 application.properties 中的属性。我认为包含 congig 的优先级更高(至少您可以在放置重要配置后尝试覆盖属性)。
  2. 您可以直接使用命令行覆盖选定的属性java -jar app.jar --prop2="value2"
  3. 或者通过系统属性覆盖java -Dprop2="value2"-jar app.jar

完整信息您可以在这里找到 http://www.baeldung.com/properties-with-spring

绝对所有属性都存储在 Spring Environment 对象中。您应该注意完整的变量名称,因为根据其他设置,您的 prop2 可能存储在 xxx.yyy.prop2 中。

关于java - 覆盖 YAML 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46403764/

相关文章:

java - 正则表达式在 Java 中失败

java - Jsoup:select(div[class=rslt prod]) 在不应该的时候返回 null

java - Spring Boot - 不支持请求方法 'POST'

properties - 自动属性 getter 、局部变量和闭包之间的 Groovy 冲突?

java - 无法连接到 spring cloud consul(无法设置主机/端口)

java - 在java中按对象的属性对ArrayList进行排序

Spring Boot 加载所有可用的属性文件,无论我的 @TestPropertySource 注释如何

cocoa - 使用 "id"作为属性名称可以吗?

java - 使用 Spring Data JDBC 持久保存资金

java - 从静态 block 或方法初始化静态最终 int 并在注释中使用它