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());
}
从数据库或 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());
}