dropwizard:从非文件源读取配置

时间:2016-02-09 13:04:47

标签: java dropwizard

从数据库或REST调用中读取dropwizard中的配置的正确方法是什么?我有一个用例,我不能有一个带有一些值的yml文件,并且应该在启动时从带有REST调用的预配置URL检索settings / config。

ApplicationConfiguration类的get方法中调用这些REST调用是否正确?

2 个答案:

答案 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());
}