我可以在我的 java 应用程序中为 config.yml 指定默认值吗?
Can I specify default values for a config.yml on my java application?
我目前正在使用我的 java 应用程序和 dropwizard。
它工作正常,我 运行 它发送了一个完整的 yml 文件或参数。
所以,例如,其中之一是这个:
reporting:
enabled: false
所以,我想做的是将这个 yml 文件设置为我的默认文件,并在需要时(为了将来的功能)发送这个 var
的值
所以我想做这样的事情
reporting:
enabled: ${REPORTING_FLAG:false}
然后我可以发送 REPORTING_FLAG 作为环境参数 (docker),应该可以正常工作....
问题是我的应用无法识别此模型。
有什么办法可以做到这一点吗?是否有额外的配置需要考虑?我以前用 spring 应用程序做过,但这似乎有所不同。
现在我收到一个错误,提示预期的布尔值无效(将整行作为字符串)
想法?
所以,在阅读了更多 dropwizard 文档后,我发现了这个:https://www.dropwizard.io/0.8.2/docs/manual/core.html
环境变量
dropwizard-configuration 模块还提供了使用 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}
我目前正在使用我的 java 应用程序和 dropwizard。
它工作正常,我 运行 它发送了一个完整的 yml 文件或参数。
所以,例如,其中之一是这个:
reporting:
enabled: false
所以,我想做的是将这个 yml 文件设置为我的默认文件,并在需要时(为了将来的功能)发送这个 var
所以我想做这样的事情
reporting:
enabled: ${REPORTING_FLAG:false}
然后我可以发送 REPORTING_FLAG 作为环境参数 (docker),应该可以正常工作....
问题是我的应用无法识别此模型。
有什么办法可以做到这一点吗?是否有额外的配置需要考虑?我以前用 spring 应用程序做过,但这似乎有所不同。
现在我收到一个错误,提示预期的布尔值无效(将整行作为字符串)
想法?
所以,在阅读了更多 dropwizard 文档后,我发现了这个:https://www.dropwizard.io/0.8.2/docs/manual/core.html
环境变量
dropwizard-configuration 模块还提供了使用 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}