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

拖放向导引导 vs 配置 vs 环境

沃皓轩
2023-03-14

典型的DropWizard应用程序指定一个应用程序子类,并覆盖其< code>initialize方法,如下所示:

class MyApplication extends Application<MyConfiguration> {
    static void main(String[] args) {
        new MyApplication().run(args)
    }

    @Override
    public void initialize(Bootstrap<MyConfiguration> bootstrap) {
        // ???
    }

    @Override
    public void run(MyConfiguration configuration, Environment environment)
            throws Exception {
        // Register resources, health checks, etc.
    }
}

在仔细阅读了DropWizard文档以及爪哇文档之后:

  • Configuration-YAML配置文件的对象表示。使用您自己的配置属性扩展它,它们也将从YAML文件中解析。
  • Bootstrap-启动前的应用程序环境,包含引导Dropwizard命令所需的一切。
  • 环境-Dropwizard应用程序的环境。

但是这些是相当模糊的类定义,尤其是最后两个。我知道我应该子类Configuration,并且它代表我的应用程序的YAML/JSON配置文件的内存中POJO。

但我无法理解其他结构代表什么(BootstrapEnvironment)。我习惯于将特定于环境的配置注入到我的应用程序中,因此我倾向于将“环境”和“配置”的概念视为同一个概念。

此外,看起来DropWizard将Bootstrap实例与Configurationimpl实例紧密地结合在一起,但是我找不到关于这两个类是如何不同的以及它们应该如何使用的示例。

所以我问:

  1. 什么是引导,我用它来做什么?
  2. 什么是环境,我该用它来做什么?

共有1个答案

卢景澄
2023-03-14

Dropwizard基本上是一个自以为是的网络框架,主要用于充当REST应用编程接口项目。你问的类是Dropwizard应用程序的关键。开发人员已经将他们想要在框架中使用的所有库组合在一起,并将它们连接在一起,这样我们就可以轻松地利用他们为我们引导的东西。

环境是Dropwizard环境容器,而不是您的应用程序的个人环境(即本地环境与生产环境)。它具有Dropwizard框架的核心属性,如jersey web容器

Bootstrap 基本上是连接环境中使用的所有内容(包括配置和应用程序)的类。

如果您查看源文件,您将对这些类的工作原理有一个很好的了解。

更新:根据您下面的问题,环境不应用于确定数据库连接类型和凭据;这就是您的配置 .yml 文件的用途。您需要将任何特定于环境的变量放在该文件中,然后使用特定的 .yml 文件运行应用程序。我个人有一个应用程序本地.yml,应用程序暂存.yml和应用程序生产.yml,并根据环境使用适当的.yml运行我的应用程序。

Dropwizard会自动配置具有特定.yml属性的数据源:请参阅此处。

 类似资料:
  • 我目前正在尝试通过调用一个以MultiPartFormData作为输入的资源来编写一个IT测试。 它在应用程序“正常”启动时工作,但在使用DropwizardAppRule助手启动时不工作。 这是我的代码: QORUS_APP的发音如下: 我收到以下错误: 消息找不到媒体类型=多部分/表单数据,类型=类组织.玻璃鱼.泽西岛.媒体.多部分.表单数据多部分,通用类型=类组织.玻璃鱼.泽西岛.媒体.多部

  • 我有一个带应用程序的spring boot应用程序。属性文件和spring数据jpa。在应用程序中,我有一个外部依赖项,需要加载外部Spring项目的bean,该项目具有基于xml的配置。外部xml有自己的组件扫描和spring jpa设置,可以与应用程序中提供该DB属性的其他DB进行交互。属性文件,我正在使用@ImportResources将其bean注入父应用程序。但是,当我在做这个sprin

  • 我正在尝试为SSO配置Spring Boot和Keycloak。我已经创建了一个基本的AngularJS应用程序,它对Spring boot后端执行一些请求。使用此 Angular应用程序工作得很好,现在我正尝试在这里跟踪新的Spring Boot Keycloak apdater文档 这是我的keycloak.json,它在WEB-INF文件夹中。 以下是我的安全配置: 即使用户没有任何此角色,

  • mesos 配置向导 mesos master 和 slave 可以通过命令行参数或环境变量来传递一系列的配置选项。通过运行 mesos-master --help 或者 mesos-slave --help 可以查看相关的可用选项。每个选项可以通过以下两种方式设置: 执行命令的时候使用 –-option_name=value 来传递配置选项。value 既可以是数值,也可以指定包含参数的文件 (

  • 我有一个标准的Spring Boot应用程序,并尝试提供一些静态内容。我想将位置更改为文件系统上的特定文件夹。这些似乎是最常见的方法: 在application.yaml设置路径 使用WebMVCConfiguer 我的问题是:第一种方法有效,第二种方法无效,我不知道为什么。有什么提示吗? 设置“静态位置”和“addResourceLocations”之间有区别吗?调试的起点是什么? 我想使用第二

  • 问题内容: 与 哪个更好,为什么? 还是除了以后编写更少的代码外没有其他区别? 写作是否意味着只导入Component对象? 问题答案: 让您代替。它减少了React名称空间的键入和重复,这通常是一种理想的现代编码约定。 此外,Webpack 2和Rollup之类的工具会“摇晃”,这意味着任何未使用的导出都不会捆绑到您的最终代码中。使用/,您可以保证所有React的源代码都将被捆绑。使用,某些工具