当前位置: 首页 > 知识库问答 >
问题:

我可以在DropWizard中拥有多个配置文件吗?

樊博雅
2023-03-14

我想为DropWizard创建几个yaml文件。其中一个包含敏感信息,另一个包含非敏感信息。

你能给我指出任何文档或例子如何在DropWizard中拥有多个配置吗?

共有3个答案

余天宇
2023-03-14

首先,您将在.yml中写入另一个yml文件路径。

sample.yml

configPath: /another.yml

另一个.yml

greet: Hello!

你只要用蛇就能解决。

public void run(SampleConfiguration configuration, Environment environment) {
    Yaml yaml = new Yaml();
    InputStream in = getClass().getResourceAsStream(configuration.getConfigPath());
    AnotherConfig anotherConfig = yaml.loadAs(in, AnotherConfig.class);
    String str = anotherConfig.getGreet(); // Hello!
...
}

对于敏感信息,我认为使用环境变量是好的。

例如,使用dropwizard环境配置
https://github.com/tkrille/dropwizard-environment-config

慕阳平
2023-03-14

理想情况下,您应该通过将敏感信息或可配置数据放在环境变量中来配置应用程序,而不是管理多个文件。请参阅有关配置的十二因素规则:http://12factor.net/config

要在Dropwizard中启用这种方法,您可以在运行时使用< code>-Ddw标志用环境变量覆盖您的配置:

java -Ddw.http.port=$PORT -jar yourapp.jar server yourconfig.yml

或者您可以使用这个方便的插件:https://github.com/tkrille/dropwizard-template-config将环境变量占位符放入您的配置:

server:
  type: simple
  connector:
    type: http
    # replacing environment variables
    port: ${env.PORT}

上述两种解决方案都与Heroku和Docker容器兼容,其中环境变量仅在运行应用程序时可用。

赵英范
2023-03-14

< code > configuration source provider 是您的答案。

bootstrap.setConfigurationSourceProvider(new MyMultipleConfigurationSourceProvider());

以下是dropwizard默认情况下的操作方式。您可以轻松地根据自己的喜好进行更改。

public class FileConfigurationSourceProvider implements ConfigurationSourceProvider {
    @Override
    public InputStream open(String path) throws IOException {
        final File file = new File(path);
        if (!file.exists()) {
            throw new FileNotFoundException("File " + file + " not found");
        }

        return new FileInputStream(file);
    }
}
 类似资料:
  • 我们正在使用DropWizard v0.8.1,我们想知道我们是否可以有一个默认值的YAML文件,然后将被特定的环境文件(如)覆盖。 Spring boot以这种方式工作,其中文件充当默认值的模板,然后将覆盖重复的属性。 我们不想复制所有重复的属性,只想在一个文件中更新默认值。

  • 我可以有多个工作流文件吗? 我有一些回购利用GitHub操作,它们工作得很好!在我的特定用例中,我在“推送”时自动部署到开发环境,在“发布”时自动部署到生产环境这是两个独立的工作流。 我知道我可以将这两个工作流放在同一个主工作流中。工作流文件,这将工作得很好,但我更希望他们在单独的工作流文件完全。例如,是否可能有一个dev.workflow文件和一个prod.workflow文件? 我已经尝试创建

  • 问题内容: 我可以在一个应用程序中包含多个web.xml文件吗?并且两个应用程序可以具有父子关系,以便有两个web.xml吗? 问题答案: 对于Servlet 3.0以下,您不能。 如果您使用的是3.0,则有可能。 在JSR 315:Java Servlet 3.0规范中,引入了 web-fragment.xml 来实现库jar的可插入性,这些库jar打包在 WEB-INF / lib下 。web

  • 我有两张POJO的员工和地址表,还有两张员工和地址表。我首先尝试在db中添加一个地址行,然后添加一个员工记录,引用前面添加的地址记录。只有当配置文件中有一个映射资源时,我才能添加地址记录。 我的主文件:'包many2one; 我的员工POJO: 我的地址文件 配置文件: 映射文件: 我的任务是在数据库中添加一个地址记录,然后使用带有地址引用的employee构造函数添加一个employee记录。当

  • 问题内容: 可以在同一项目中完全使用所有4种语言吗? 这个风格也有类似的问题:我可以将Swift与C ++混合使用吗?类似于 Objective-C .mm文件,对于该文件,可接受的答案 为否。 Bridging Header适当地使用.h不包含C 语句的语句, Objective-C何时.h包含的包装器C ,.mm用于 实际包装C 类的文件以及.swift,这4种语言(如果 包含,则为5种Obj

  • 本文向大家介绍如何在C#中订阅事件,我们可以在C#中为一个事件拥有多个订阅者吗?,包括了如何在C#中订阅事件,我们可以在C#中为一个事件拥有多个订阅者吗?的使用技巧和注意事项,需要的朋友参考一下 事件使类或对象在发生感兴趣的事件时通知其他类或对象。 引发事件的类称为发布者,而处理事件的类称为订阅者。 在事件中 一个事件可以有多个订阅者。订阅者可以处理来自多个发布者的多个事件。 没有订阅者的事件永远