技術共有

Java プロジェクトのさまざまな環境変数と原則を構成する方法

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

さまざまなプロファイルを構成する方法

まず、Java プロジェクトにはさまざまな環境構成が必要であり、パッケージ化するときに、対応する構成が自動的に使用されます。では、どうすればそれを達成できるのでしょうか?

Spring Boot プロジェクトの src/main/resources ディレクトリに application.yml ファイルを作成または追加します。ここは、Spring Boot がデフォルトで構成ファイルを探す場所です。このファイルには共通の構成を追加できます。

次に、同じディレクトリに application-test.yml や application-prod.yml などのファイルを作成することもでき、Spring Boot はこれらのプロファイル固有の構成ファイルを自動的に認識します。これらのファイルでは、データベース アドレス、Redis キャッシュ アドレスなど、さまざまな環境のパラメーターを定義できます。
つまり、src/main/resources ディレクトリには、次のようなファイルがいくつか存在する可能性があります。

application.yml
application-prod.yml
application-test.yml
  • 1
  • 2
  • 3

次に、application-test.yml と application-prod.yml を使用して、同じ構成で値が異なる 2 つの変数を宣言できます。例えば
アプリケーションテスト.yml:

mysql:
  url: https://xx.test.com/mysql
  • 1
  • 2

アプリケーションprod.yml:

mysql:
  url: https://xx.online.com/mysql
  • 1
  • 2

Java コードでは、この URL を動的に使用できます。

    @Value("${mysql.url}")
    protected String mysqlUrl;
  • 1
  • 2

完璧。

では、システムの実行中に、対応するプロファイル固有の .yml ファイルを自動的に使用するにはどうすればよいでしょうか?下記を参照してください

プロファイル自動切り替えの原理

環境変数が外部ネットワークからレイヤーごとにどのようにプロジェクトに渡されるかを見てみましょう。
まず、Java プロジェクトは通常、docker によってパッケージ化されます。それでは、ドッカーから始めましょう:

  1. Docker パッケージ化コマンドと環境パラメーター:
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
  • 1

キーワード、ビルド引数 、パラメータ dc_env=test を設定します。

  1. Docker ファイル、宣言するdc_env、mvn コマンドに使用されます
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
  • 1
  • 2
  • 3

-P はプロファイルの設定を意味することに注意してください

  1. pom.xml、さまざまな環境を構成する

前のステップの mvn コマンドは -P を追加しました。これはどこで使用されますか? もちろん、これは marven 設定ファイル (pom.xml) 内にあります。

<profiles>
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
                <log.env>test</log.env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profile.active>prod</profile.active>
                <log.env>prod</log.env>
            </properties>
        </profile>
    </profiles>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

上記では、2 つの環境変数が追加されています。変数ごとにプロパティが設定されます。つまり、プロフィール.アクティブ
この値はどこで使用できるのでしょうか?

メインの application.yml ファイルで使用してください。

server:
  profiles:
    active: @profile.active@
  • 1
  • 2
  • 3

前のステップの profile.active 変数の値に基づいて、使用するプロファイルを定義します。

それ以来、docker パッケージから定義された変数はメインの yml ファイルに渡されるようになりました。このファイルでは、server.profiles.active の値に関係なく、どのサブ yml 設定が使用されます。たとえば、test の場合は、application-test.yml の設定が読み込まれます。 ! !

開発環境で環境を切り替える方法

  1. まず、marven が最初に同期します。 同期後、環境を確認してください。
    ここに画像の説明を挿入します

  2. 次に、ローカルでコンパイルしてパッケージ化し、-P を使用して環境変数を指定します。
    ここに画像の説明を挿入します

  3. 最後に、実行するには、下の図の右上隅をクリックします。[アクティブ プロファイル] に、対応する環境変数 (test など) を入力します。
    ここに画像の説明を挿入します

  4. 最後に、「実行」をクリックします。