gpt4 book ai didi

configuration - 使用环境变量设置类型列表的 Play 框架配置变量

转载 作者:行者123 更新时间:2023-12-04 03:40:35 25 4
gpt4 key购买 nike

我想要做的是将类型列表的配置变量设置为环境变量。
我知道我可以使用这样的环境变量:

variable = ${?ENV_VAR}

但我不知道 env var 必须如何才能被接受为类型列表。我试过了:
( "item1" "item2" )
["item1","item2"]
"item1":"item2"

所有三个符号都会抛出一个配置异常:

配置错误 [env var ES_NODES: elasticsearch.hosts 的类型是 STRING 而不是 LIST]

如何告诉 play 将环境变量解析为列表?

最佳答案

用 play 2.3 测试
以下是一个可选的解决方案(可能还有其他更漂亮的解决方案......):

环境配置示例:

export KAFKA_BROKERS="12.1.1.2:9092,33.3.3.3:9092"

并播放配置:
kafka.brokersStr = "127.0.0.1:9092","someotherip:9092"
kafka.brokersStr = ${?KAFKA_BROKERS}
kafka.brokers = [${kafka.brokersStr}]

如果未定义 $KAFKA_BROKERS,则将忽略“kafka.brokersStr”中的第二个赋值。

问题是,如果 KAFKA_BROKERS 没有定义,如果我们直接在列表中使用它,“kafka.brokers”将是“[]”并覆盖任何默认配置,即使 $KAFKA_BROKERS 中没有值。

不好的例子:
在 play application.conf 中有一个功能,如果环境变量设置为未定义的环境变量,则配置将使用以前的值:例如
env var AA 未定义,并且在 conf 中您有以下内容:
a.a = "aa" 
a.a = ${?AA}

a.a 仍将是“aa”

但如果 a.a 是一个列表:
a.a = ["aa"]
a.a = [${?AA}]

a.a 将是一个空列表 "[]"

关于configuration - 使用环境变量设置类型列表的 Play 框架配置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com