Typesafe Config不接受在运行时设置的系统属性

时间:2017-10-27 11:54:38

标签: scala typesafe-config

我有一个核心库,可以将其配置设置为系统属性。

mail.from = mail@example.com

我想用它们覆盖我的配置,例如:

my.mail.from = "me@example.com"
my.mail.from = ${?mail.from}

这适用于单元测试。在我的Play(2.6)应用程序中它没有。

PropertiesConfiguration.init() // this inits the system properties
info("mail.from: " + sys.props.get("mail.from")) // >> 'mail@example.com' as expected   
val config = ConfigFactory.load()
info("my.mail.from: " + config.getString("my.mail.from")) // >> 'me@example.com' instead of 'mail@example.com'

这是不可能的还是我错过了什么?

1 个答案:

答案 0 :(得分:4)

尝试使任何缓存的配置无效,以便获取对系统属性的更改:

PropertiesConfiguration.init()
info("mail.from: " + sys.props.get("mail.from"))

ConfigFactory.invalidateCaches()

val config = ConfigFactory.load()
info("my.mail.from: " + config.getString("my.mail.from"))