我目前正在使用dropwizard处理我的Java应用程序。
它工作正常,我运行它发送yml文件完整或参数。
例如,其中之一就是这个:
reporting:
enabled: false
所以,我要做的是将此yml文件设置为默认值,并在需要时(用于将来的功能)发送此var
所以我想做这样的事情
reporting:
enabled: ${REPORTING_FLAG:false}
然后我可以将REPORTING_FLAG作为环境参数(码头工人)发送,并且应该可以正常工作。...
问题是我的应用程序无法识别此模型。
有什么办法可以做到这一点吗?是否需要考虑其他配置?我以前用spring应用程序做到过,但这似乎有所不同。
现在我收到一个错误消息,期望的布尔值无效(将整行作为字符串)
想法?
答案 0 :(得分:3)
因此,在阅读了更多dropwizard文档之后,我发现了这一点:https://www.dropwizard.io/0.8.2/docs/manual/core.html
环境变量
dropwizard配置模块还提供了使用SubstitutingSourceProvider和EnvironmentVariableSubstitutor将配置设置替换为环境变量值的功能。
public class MyApplication extends Application<MyConfiguration> {
// [...]
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// Enable variable substitution with environment variables
bootstrap.setConfigurationSourceProvider(
new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(),
new EnvironmentVariableSubstitutor()
)
);
}
// [...]
}
需要替换的配置设置必须在配置文件中明确编写,并遵循Apache Commons Lang库中StrSubstitutor的替换规则。
mySetting: ${DW_MY_SETTING}
defaultSetting: ${DW_DEFAULT_SETTING:-default value}