dropwizard:从非文件源读取配置

dropwizard: read configuration from a non-file source

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

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

Similar to my answer here,您按照您希望的方式实现 ConfigurationSourceProvider 接口,并配置您的 dropwizard 应用程序以在您的应用程序 class 上使用它:

@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap){
  bootstrap.setConfigurationSourceProvider(new MyDatabaseConfigurationSourceProvider());
}

默认情况下,InputStream 你 return 被读取为 YAML 并映射到 Configuration 对象。 The default implementation

您可以通过

覆盖它
bootstrap.setConfigurationFactoryFactory(new MyDatabaseConfigurationFactoryFactory<>());

然后你有你的 FactoryFactory :) return 是一个 Factory,它显示 InputStream 和 return 是你的 Configuration

public T build(ConfigurationSourceProvider provider, String path {
  Decode.onWhateverFormatYouWish(provider.open(path));
}

进一步阐述 Nathan 的回复,您可能需要考虑使用 UrlConfigurationSourceProvider ,它也随 dropwizard 一起提供,并允许从 URL.[=12 检索配置=]

类似于:

@Override
public void initialize(Bootstrap<MyRestApplicationConfiguration> bootstrap) {
    bootstrap.setConfigurationSourceProvider(new UrlConfigurationSourceProvider());
}