Spring.profiles
一般的に、実際のプロジェクトでは、大まかにdev、test、prodに分けられます。それぞれの環境設定項目は、インターフェースのアドレスやデータベース接続の設定など、いくつかのパラメータが異なります。設定ファイルの頻繁な修正を避けるために、設定された様々な環境間で簡単に切り替えたい場合、複数の環境設定項目が必要です。SpringBootは、プロパティ用のプロファイルを提供し、異なる環境間の切り替えに便利なだけでなく、異なる環境用にパッケージ化されています。
application-dev.yml
application-test.yml
application-prod.yml
変更しない設定項目はapplication.ymlに置き、異なる環境に応じて変更する必要がある設定項目は対応するymlファイルに置きます。
その場合、application.ymlの以下の属性を使って、どの環境の設定ファイルを使うかを指定することができます(例:開発環境を指定する):
spring:
profiles:
active: dev
テスト環境を指定します。
spring:
profiles:
active: test
これにより、profiles属性を手動で修正することで異なるプロファイルを切り替えることができますが、これもパッケージング時に毎回手動で修正する必要があります。 実際には、プレースホルダーを使用してこのパラメーターを動的に渡すことで、異なる環境の切り替えを可能にすることができます。
pom.xml
まず、profiles属性を追加します:
<profiles>
<profile>
<!-- ローカル開発環境>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
<spring.active>dev</spring.active>
</properties>
<!-- デフォルトはdev環境である。>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 本番環境>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
<spring.active>test</spring.active>
</properties>
</profile>
<profile>
<!-- 本番環境>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
<spring.active>prod</spring.active>
</properties>
</profile>
</profiles>
リソースを追加します:
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application-${profiles.active}.yml</include>
<include>bootstrap.yml</include>
<include>application.yml</include>
</includes>
</resource>
アプリケーションの修正.yml
この時点で、application.ymlのprofilesプロパティを設定します:
spring:
profiles:
active: @spring.active@
SpringBootのバージョンによってプレースホルダの使い方が異なり、''$''シンボルや "#"を使ったり、新しいSpringBootのバージョンでは''@''シンボルを使ったりすることに注意してください。
実行環境の指定
上記の設定後、アイデアでは、手動で希望の設定環境を選択することができます:
または、パッケージング時に関連するパラメータを渡します:
mvn clean package -P dev
mvn clean package -P test
mvn clean package -P prod