私たちのプロジェクトには、開発環境、本番環境、およびさまざまな環境でさまざまな構成があります。たとえば、サービスポートへのアクセス、データベース構成など。環境やリリースを切り替えるたびにこれらの構成値を変更すると、面倒なだけでなく、間違いを犯しやすくなります。
私は何をすべきか?
さまざまな環境でさまざまな構成をロードできますか?
解決:
方法1:複数の構成ファイルを追加し、さまざまな環境でさまざまな構成を読み取ります
1.環境に応じて、次の図に示すように、さまざまな構成ファイルを追加します。
特定の構成コンテンツはapplication.ymlに似ており、さまざまな環境に応じて、さまざまなサーバー、ポートなどをセットアップします。
2. application.ymlのコンテンツを削除し、環境構成を追加します
spring:
profiles:
active: dev
このように、環境とパッケージを切り替えるときは、application.ymlを変更するだけで済みます。
ただし、application.ymlを変更する必要があるたびに、それでも少し面倒です。次の高度なバージョンで対処できます。
方法2:プロファイルを介して環境を動的に構成する
1.環境に応じて、次の図に示すように、さまざまな構成ファイルを追加します。
2. pom.xmlを変更し、構成環境プロファイルを設定します(マルチモジュールプロジェクトの場合は、起動モジュールのpomで変更します)。これはbulidと同じです。
<profiles>
<profile>
<id>dev</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<activatedProperties>dev</activatedProperties>
</properties>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<activatedProperties>test</activatedProperties>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<activatedProperties>prod</activatedProperties>
</properties>
</profile>
</profiles>
3. application.ymlのコンテンツを設定し、起動環境を動的に指定します
spring:
profiles:
active: @activatedProperties@
注:@ activateProperties @は、profile => properties => activatePropertiesノードと一致している必要があります
4.スタートアップ環境を選択します
5.環境パッケージを指定します
コマンドを使用してパッケージ化するパッケージング環境を指定します
clean package -P prod
パッケージ化後、target \ classesのapplication.ymlが指定された環境であるかどうかを確認できます
spring:
profiles:
active: prod