如何通过环境变量传递Quarkus列表配置?求逗号分隔外的便捷方案
在Quarkus配置中传递列表的替代方式
Quarkus确实支持除逗号分隔外的便捷方式传递列表,完全能解决列表项包含逗号的场景,甚至有类似Spring的索引式写法,具体如下:
1. 索引后缀式环境变量(推荐)
这就是你想要的类似Spring的写法,Quarkus支持通过_数字后缀来逐个定义列表项,不需要额外的结尾下划线。
示例:
假设你有如下配置类:
import io.smallrye.config.ConfigMapping; import java.util.List; @ConfigMapping(prefix = "my") public interface MyConfig { List<String> foo(); }
对应的环境变量可以这么写:
MY_FOO_0=val1,with,comma # 项里包含逗号完全没问题 MY_FOO_1=val2 MY_FOO_2=val3
这种方式下,每个列表项都是独立的环境变量,不会被逗号拆分,完美适配带特殊字符的场景。
2. 引号包裹带逗号的项(逗号分隔的补充)
如果仍想保留逗号分隔的形式,只需要给包含逗号的项加上双引号,Quarkus会正确识别:
MY_FOO="val1,with,comma",val2,val3
解析后列表会是["val1,with,comma", "val2", "val3"]。
3. 多行环境变量(shell支持场景)
在bash等支持多行变量的shell中,还可以直接用换行来分隔列表项:
MY_FOO="val1,with,comma val2 val3"
Quarkus会自动将每行解析为一个列表项。
内容的提问来源于stack exchange,提问作者Mariano
相关产品推荐
相关产品推荐

