今回は、定義ファイルである「application.yml」や「application.properties」を、開発環境・本番環境等、環境毎に切り替えるようにしてみたので、そのサンプルプログラムを共有する。
前提条件
下記記事の実装が完了していること。
サンプルプログラムの内容
定義ファイルに「application.yml」「application-dev.yml」「application-prod.yml」を利用した場合の、サンプルプログラムの構成は以下の通り。
なお、上記の赤枠が、前提条件の内容と変更したプログラムとなる。
application.ymlの内容は以下の通り。spring.profiles.activeの値を「dev」とすることで、「application-dev.yml」の設定値が読み込まれるようになる。
1 2 3 | spring: profiles: active: dev |
application-dev.ymlの値は以下の通り。「前提条件」の記事の「application.yml」と同一の内容になっている。
1 2 3 4 5 6 7 8 9 | server: port: 8084 # DB接続情報 spring: datasource: url: jdbc:oracle:thin:@localhost:1521:xe username: USER01 password: USER01 driverClassName: oracle.jdbc.driver.OracleDriver |
application-prod.ymlの値は以下の通り。「application-dev.yml」と同一の項目で、別の値を設定している。
1 2 3 4 5 6 7 8 9 | server: port: 8085 # DB接続情報 spring: datasource: url: jdbc:oracle:thin:@localhost:1521:xeProd username: USER02 password: USER02 driverClassName: oracle.jdbc.driver.OracleDriver |
Spring Bootアプリケーションを起動し、「http:// (ホスト名):8084」とアクセスした場合の実行結果は以下の通りで、「application-dev.yml」の設定値を取得し表示していることが確認できる。
また、application.ymlのspring.profiles.activeの値を「prod」とし、Spring Bootアプリケーションを起動し、「http:// (ホスト名):8085」とアクセスした場合の実行結果は以下の通りで、「application-prod.yml」の設定値を取得し表示していることが確認できる。
なお、「application.yml」を「application.properties」に、「application-dev.yml」を「application-dev.properties」に、「application-prod.yml」を「application-prod.properties」にそれぞれ変更した場合も同様の結果となる。この場合のサンプルプログラムの構成は以下の通り。
また、それぞれのプロパティファイルの内容は以下の通り。
1 | spring.profiles.active=dev |
1 2 3 4 5 6 | server.port = 8084 # DB接続情報 spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe spring.datasource.username=USER01 spring.datasource.password=USER01 spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver |
1 2 3 4 5 6 | server.port = 8085 # DB接続情報 spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xeProd spring.datasource.username=USER02 spring.datasource.password=USER02 spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver |
その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-profile/demo
要点まとめ
- spring.profiles.activeを設定し、その値に応じた定義ファイルを準備することで、定義ファイルを環境毎に切り替えることができる。