Java dropwizard:从非文件源读取配置

Java dropwizard:从非文件源读取配置,java,dropwizard,Java,Dropwizard,从数据库或REST调用读取dropwizard中的配置的正确方法是什么?我有一个用例,其中我不能有一个带有某些值的yml文件,应该在启动时通过REST调用从预配置的URL检索settings/config 仅在应用程序配置类的get方法中调用这些REST调用是否正确?,您可以通过以下方式实现配置源提供程序接口,并配置dropwizard应用程序在您的应用程序类上使用它: @Override public void initialize(Bootstrap<MyConfiguration&g

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

仅在
应用程序配置
类的get方法中调用这些REST调用是否正确?

,您可以通过以下方式实现
配置源提供程序
接口,并配置dropwizard应用程序在您的应用程序类上使用它:

@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap){
  bootstrap.setConfigurationSourceProvider(new MyDatabaseConfigurationSourceProvider());
}
然后,您的
FactoryFactory
:)返回一个
工厂
,它读取
输入流
,并返回您的
配置

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

对弥敦的回答做了进一步的阐述,您可能需要考虑使用<代码> UrlConfigurationSourceProvider < />代码>,它也提供了DROPWAZER,并允许从URL检索配置。

比如:

@Override
public void initialize(Bootstrap<MyRestApplicationConfiguration> bootstrap) {
    bootstrap.setConfigurationSourceProvider(new UrlConfigurationSourceProvider());
}
@覆盖
公共无效初始化(引导引导引导){
setConfigurationSourceProvider(新的UrlConfigurationSourceProvider());
}

谢谢Daniele-希望我能接受这两个答案。使用Natan的,因为我的URL不完全返回YAML-我需要处理它。谢谢!所以看起来我必须从这个实现返回一个inputstream到一个YAML文件。也就是说,从DB中读取属性,在yaml中持久化,然后返回一个句柄。有点不方便,但我想应该可以。我没意识到它正在返回InputStream。我同意这有点不方便。看起来您还可以配置如何处理
InputStream
。这仍然有点乏味,因为您仍然需要使用
InputStream
,但至少可以在内存中工作。我会更新我的答案。
@Override
public void initialize(Bootstrap<MyRestApplicationConfiguration> bootstrap) {
    bootstrap.setConfigurationSourceProvider(new UrlConfigurationSourceProvider());
}