从数据库或REST调用中读取dropwizard中的配置的正确方法是什么?我有一个用例,我不能有一个带有一些值的yml文件,并且应该在启动时从带有REST调用的预配置URL检索settings / config。
在ApplicationConfiguration
类的get方法中调用这些REST调用是否正确?
答案 0 :(得分:5)
Similar to my answer here,您可以按照希望的方式实现ConfigurationSourceProvider
接口,并通过以下方式配置dropwizard应用程序以在Application类上使用它:
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap){
bootstrap.setConfigurationSourceProvider(new MyDatabaseConfigurationSourceProvider());
}
默认情况下,您返回的InputStream
将被读取为YAML并映射到Configuration
对象。 The default implementation
您可以通过
覆盖此内容bootstrap.setConfigurationFactoryFactory(new MyDatabaseConfigurationFactoryFactory<>());
然后,您的FactoryFactory
:)会返回Factory
,其中会显示InputStream
并返回您的Configuration
。
public T build(ConfigurationSourceProvider provider, String path {
Decode.onWhateverFormatYouWish(provider.open(path));
}
答案 1 :(得分:3)
详细阐述了Nathan的回复,您可能需要考虑使用UrlConfigurationSourceProvider
,它也提供了dropwizard,并允许从URL检索配置。
类似的东西:
@Override
public void initialize(Bootstrap<MyRestApplicationConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(new UrlConfigurationSourceProvider());
}