web-dev-qa-db-ja.com

DropWizard Bootstrap vs構成vs環境

一般的なDropWizardアプリケーションはApplicationサブクラスを指定し、その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ドキュメントとJavaDocsをよく読んだ後:

  • Configuration -YAML設定ファイルのオブジェクト表現。これを独自の構成プロパティで拡張すると、YAMLファイルからも解析されます。
  • Bootstrap -起動前のアプリケーション環境。bootstrap Dropdropzardコマンドに必要なすべてが含まれています。
  • Environment -Dropwizardアプリケーションの環境。

しかし、これらはかなり曖昧なクラス定義、特に最後の2つです。私はConfigurationをサブクラス化することになっていることと、それがアプリのYAML/JSON構成ファイルのインメモリPOJOを表すことを理解しています。

しかし、他の構成要素が何を表しているのか理解できません(BootstrapおよびEnvironment)。私はアプリに環境固有の設定を注入することに慣れているので、「環境」と「設定」の概念を1つとして考える傾向があります同じで。

さらに、DropWizardはBootstrapインスタンスをConfiguration implインスタンスと密接に結合しているようですが、これら2つのクラスがどのように異なり、どのように使用する必要があるかについては、実証可能な例を見つけることができません。

だから私は尋ねます:

  1. Bootstrapとは何ですか?何に使用しますか?
  2. Environmentとは何ですか?何に使用しますか?
27
IAmYourFaja

Dropwizardは、基本的にはREST APIプロジェクトとして機能するために使用される、見識のあるWebフレームワークです。あなたが尋ねているクラスは、Dropwizardアプリケーションを作るための核心です。開発者はすべてを組み合わせました彼らが彼らのフレームワークで使用したいライブラリとそれらを一緒に配線したので、彼らが私たちのためにブートストラップしたものから簡単に作業できます。

Environment はDropwizard Environmentコンテナであり、アプリケーションの個人環境(ローカルと本番など)ではありません。これには、ジャージWebコンテナなどのDropwizardフレームワークのコアとなるプロパティがあります。

Bootstrap は基本的に、構成やアプリケーションなど、環境で使用されているすべてのものを結び付けるクラスです。

ソースファイルを見ると、これらのクラスがどのように機能しているかがよくわかります。

更新:以下の質問によると、データベース接続の種類と資格情報を決定するために環境を使用しないでください。これが、Configuration .ymlファイルの目的です。そのファイルに環境固有の変数を配置し、特定の.ymlファイルを使用してアプリケーションを実行する必要があります。私はapplication-local.yml、application-staging.yml、application-prod.ymlを個人的に所有しており、環境に応じて適切な.ymlでアプリケーションを実行します。

Dropwizardは、特定の.ymlプロパティを使用してデータソースの自動構成を行います。 ここ を参照してください。

15
th3morg