Spring Boot

定義ファイルの設定値を環境によって切り替えてみた

今回は、定義ファイルである「application.yml」や「application.properties」を、開発環境・本番環境等、環境毎に切り替えるようにしてみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

定義ファイルの設定値をJavaプログラムから取得してみたSpring Bootの設定値は、定義ファイルである「application.yml」や「application.properties」...

サンプルプログラムの内容

定義ファイルに「application.yml」「application-dev.yml」「application-prod.yml」を利用した場合の、サンプルプログラムの構成は以下の通り。
サンプルプログラムの構成_yml
なお、上記の赤枠が、前提条件の内容と変更したプログラムとなる。

application.ymlの内容は以下の通り。spring.profiles.activeの値を「dev」とすることで、「application-dev.yml」の設定値が読み込まれるようになる。

application-dev.ymlの値は以下の通り。「前提条件」の記事の「application.yml」と同一の内容になっている。

application-prod.ymlの値は以下の通り。「application-dev.yml」と同一の項目で、別の値を設定している。

Spring Bootアプリケーションを起動し、「http:// (ホスト名):8084」とアクセスした場合の実行結果は以下の通りで、「application-dev.yml」の設定値を取得し表示していることが確認できる。
サンプルプログラムの実行結果_dev

また、application.ymlのspring.profiles.activeの値を「prod」とし、Spring Bootアプリケーションを起動し、「http:// (ホスト名):8085」とアクセスした場合の実行結果は以下の通りで、「application-prod.yml」の設定値を取得し表示していることが確認できる。
サンプルプログラムの実行結果_prod

なお、「application.yml」を「application.properties」に、「application-dev.yml」を「application-dev.properties」に、「application-prod.yml」を「application-prod.properties」にそれぞれ変更した場合も同様の結果となる。この場合のサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成_properties

また、それぞれのプロパティファイルの内容は以下の通り。

要点まとめ

  • spring.profiles.activeを設定し、その値に応じた定義ファイルを準備することで、定義ファイルを環境毎に切り替えることができる。