blog

SpringBootプロジェクトの複数環境設定

一般に、実際のプロジェクトでは、dev、test、prodに大別されます。それぞれの環境では、インターフェースのアドレスやデータベース接続の設定など、いくつかのパラメータが異なります。設定ファイルの頻...

Mar 28, 2020 · 3 min. read
Share this

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
Read next

決定版 Https ガイド (I) からのメモ

ハッシュ関数は、任意の長さの入力を一定の長さの出力に変換するアルゴリズムです。暗号ハッシュ関数のいくつかの付加的な特性:抗原性(単一)

Mar 28, 2020 · 2 min read