ホームページ  >  記事  >  Java  >  SpringBootはProfileを通じて異なる環境での構成切り替えをどのように実現しているのでしょうか?

SpringBootはProfileを通じて異なる環境での構成切り替えをどのように実現しているのでしょうか?

王林
王林転載
2023-05-10 19:16:041641ブラウズ

SpringBoot はプロファイルを使用して、一般的な開発環境、テスト環境、運用環境などのさまざまな環境で構成の切り替えを実装します。

SpringBoot で一般的に使用される構成ファイルには、プロパティ ファイルと yml ファイルという 2 つの主なタイプがあります。プロパティ ファイルの場合は、主に複数のプロファイル構成ファイルを通じて実装され、yml ファイルの場合は、主に複数のフラグメントによって実装されます (構成フラグメントは、yml ファイル内の 3 つの水平バーに分割されます)。

実際の作業ではプロファイルの方が便利です SpringBoot プログラムを開発したら、最終的には jar パッケージにパッケージ化して使用します 設定ファイルを外部に置き、外部ファイルにプロファイル名を指定することができます構成ファイル、したがって、どの環境 (開発環境、テスト環境、運用環境) を使用するかを決定する構成パラメーター。

1. プロジェクトの構築

このブログのデモでは 2 つの SpringBoot プロジェクトを構築し、それぞれ 2 つのプロファイルの使用方法を示します。

Demo1 は複数のプロパティ ファイルを通じて実装され、Demo2 は 1 つの yml ファイルを通じて実装されます。構築結果は次のとおりです。作成したクラスがスタートアップ クラスが配置されているパッケージまたはサブパッケージの下にある場合、SpringBoot はスタートアップ クラスが配置されているパッケージの下のすべてのクラスをスキャンするため、スタートアップ クラスでスキャン パッケージを構成する必要はありません。デフォルトではそのサブパッケージ ファイル内の注釈。したがって、デモの便宜上、後続のデモでは、スタートアップ クラスが配置されているパッケージまたはサブパッケージの下にクラス ファイルを書き込みます。

同じコードの TestController クラスは、パラメーターなしのインターフェイス アクセスを提供するために両方のデモで記述されています。返される結果は、現在有効なプロファイル名と、プロファイル構成ファイルで構成されているポート番号です。デモ テスト中に結果を確認するには、IDEA コンソールに出力された情報を直接確認して結果を確認することもできます。 TestController クラスの具体的な内容は以下のとおりです: SpringBootはProfileを通じて異なる環境での構成切り替えをどのように実現しているのでしょうか?

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private Environment env;

    @RequestMapping("/getport")
    public String getPort()
    {
        StringBuilder sb = new StringBuilder();

        String[] activeProfiles = env.getActiveProfiles();
        sb.append("启动的 profile 名称为:").append(activeProfiles[0]);

        sb.append("<br/>");

        String portValue = env.getProperty("server.port");
        sb.append("启动的端口为:").append(portValue);
        return sb.toString();
    }
}

2. マルチファイル設定方法

Demo1 の SpringBoot プログラムは設定ファイルとしてプロパティ ファイルを使用するため、マルチファイル構成メソッドはプロファイルを実装するために使用されます。

SpringBoot の設定ファイルは application で始まる必要があります。プロパティ ファイルについては、アプリケーション プロファイル名.properties の命名形式を使用して、プロファイルのマルチ環境構成を実装します。Demo1 では application-dev.properties が使用されます。 、application -test.properites、application-pro.properties の 3 つのファイルは、開発環境、テスト環境、本番環境の設定ファイルを表します。設定内容は以下の通りです。便宜上、ここでは SpringBoot の起動ポートのみ設定しています。デモンストレーション:

# application-dev.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 dev 表示 profile 配置文件的名称
server.port=8081
# application-test.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 test 表示 profile 配置文件的名称
server.port=8082
# application-pro.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 pro 表示 profile 配置文件的名称
server.port=8083

特定のプロファイル構成ファイルを使用したい場合は、application.properties でプロファイル名を構成する必要があります:

# application-pro.properties 配置内容
# 本 Demo 中编写了多个以 application 开头的配置文件
# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring.profiles.active=test

次に、Demo1 の SpringBoot プログラムを開始します。上記の例では、プロファイルは test であり、起動ポートは 8082 に相当するため、TestController で提供される localhost:8082/getport インターフェイスにアクセスして、プロファイルの構成情報を確認します。

3. マルチフラグメント設定方法

Demo2 の SpringBoot プログラムは設定ファイルとして yml ファイルを使用するため、プロファイルの実装にはマルチフラグメント設定方法が使用されます。

次に示すように、application.yml で 3 本の水平バー (---) を使用して構成フラグメントを区切ります。

# 本 Demo 中只编写了一个 application.yml 的配置文件
# 通过三个横杠(---)来分隔开 3 种配置文件
# 通过 spring.config.activate.on-profile 设置 profile 的名称

# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring:
  profiles:
    active: pro
---
server:
  port: 9091

spring:
  config:
    activate:
      on-profile: dev
---
server:
  port: 9092

spring:
  config:
    activate:
      on-profile: test
---
server:
  port: 9093

spring:
  config:
    activate:
      on-profile: pro

次に、上記の例で使用したように、Demo2 の SpringBoot プログラムを開始します。プロファイルは pro で、対応する起動ポートは 9093 です。したがって、TestController で提供される localhost:9093/getport インターフェイスにアクセスすることで、プロファイル構成情報を確認できます。

4. 外部設定ファイルの使用

SpringBoot プログラムは開発後、設定ファイルとともに jar パッケージにパッケージ化されるため、設定ファイルを変更することはできません。したがって、構成ファイルを外部にコピーし、jar パッケージと組み合わせ、コマンド ラインを使用して SpringBoot プログラムを起動し、コマンド ライン パラメーター (--spring.config.config) で使用する外部構成ファイルのパスを指定します。位置)。外部構成ファイルでプロファイル構成を変更して、異なる環境で構成を切り替えることができます。

次の図に示すように、Demo1 によってパッケージ化された jar パッケージと構成ファイルを d:\javacode\demo1 フォルダーに配置します。このディレクトリで次のコマンド ラインを実行して、SpringBoot プログラムを開始します。

D:\javacode\demo1> java -jar .\demo1-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.properties

application.properties で構成されたプロファイルは test であるため、ポート 8082 が開始されます。

次の図に示すように、Demo2 によってパッケージ化された jar パッケージと構成ファイルを d:\javacode\demo2 フォルダーに配置します。このディレクトリで次のコマンド ラインを実行して、SpringBoot プログラムを開始します。

D:\javacode\demo2> java -jar .\demo2-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.yml

application.yml で構成されたプロファイルは pro であるため、ポート 9093 が開始されます。

以上がSpringBootはProfileを通じて異なる環境での構成切り替えをどのように実現しているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。