我的 .properties 文件中有以下内容:
connection1.username=${cloud.db.username}
connection1.password=${cloud.db.password}
我想在运行/调试配置中传递这些变量
我以为我需要做的就是在 JVM 命令行中传递以下参数:-Dcloud.db.username=JOHN -Dcloud.db.password=SECRET
。
但在代码中调用 Properties.getProperty()
仍然返回 ${cloud.db.username}
。
我在 IntelliJ IDEA 下将其作为 junit 运行。
最佳答案
使用 -D 将属性传递到 jvm 中会将它们放入系统属性中(通过 System.getProperties() 访问)。
在代码中从文件创建 java.util.Properties 可为您提供一组完全独立的属性。
许多应用程序允许您通过命令行 -D 选项和在文件中指定属性。为此,他们必须在两者之间实现某种回退机制,并决定优先选择哪一个。
此外,一些应用程序允许您将一个属性定义为另一个属性,它们通常通过扩展或包装 java.util.Properties 来实现。
您希望这两种方法都能正常工作,但 Java 都没有开箱即用。
如果您想实现这些功能,请查看一些支持它们的开源项目。
关于java - 如何将变量传递给 .property 文件中引用的 JVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804008/