【发布时间】:2019-03-07 19:50:40
【问题描述】:
我使用的是 HOCON 配置格式,解析库来自 typesafe.Config。 HOCON 支持环境变量注入和覆盖。喜欢:
my.config = "asd"
my.config = ${?MY_ENV_VAR}
如果存在名为 MY_ENV_VAR 的环境变量,这将替换默认值“asd”。但是我似乎找不到任何好的方法来替换列表环境。喜欢:
my.config = [1,2,3,4]
my.config = ${?MY_ENV_LIST}
因为默认情况下,来自外部的 env vars 将默认为字符串,因此从库的角度来看,[1,2,3,4] 将被视为“[1,2,3,4]”,因此不能将其视为列出并会产生如下运行时错误:
com.typesafe.config.ConfigException$WrongType: application.conf: 5: application.boolliststring 的类型为 STRING 而不是 LIST
在 com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:133) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164) 在 com.typesafe.config.impl.SimpleConfig.getList(SimpleConfig.java:212)
任何人都知道以 HOCON 格式进行列表 env 替换的正确方法是什么? 提前致谢。
【问题讨论】:
-
环境变量
MY_ENV_LIST包含什么? -
@ToYonos MY_ENV_LIST='[1,2,3,4]',来自环境变量。因为 env vars 只能是字符串类型,所以会导致这个问题。
标签: typesafe-config hocon