読者です 読者をやめる 読者になる 読者になる

Web系開発メモ

Java, SpringBoot, JavaScript, CSS, HTML などの記事を書いています。

SpringBoot入門:環境で設定を変える

Spring Boot の設定ファイル application.properties を、環境に応じて切り替える方法を書いていきます。今回の例では、次のファイルを用意して切り替えてみます。

  • application.properties
  • application-staging.properties

2番目のファイルはステージング環境用(テスト環境用)で、ステージングのときだけ有効にしたい設定値を書いていきます。

手順1. application.properties の作成

クラスパス直下に application.properties を作成して、全環境で使う設定値を保存します。

server.port=80

spring.messages.basename=messages
spring.messages.cache-seconds=-1
spring.messages.encoding=UTF-8

今回の例では、ポート番号やメッセージの設定だけ書いています。

手順2. application-staging.properties の作成

クラスパス直下に application-staging.properties を作成して、ステージング環境だけ変更したい設定を書きます。

server.port=8080

今回はポート番号だけ変えることにします。

手順3. アプリの起動(通常)

いつもどおり、環境を指定せずにアプリを起動します。

> java -jar {jar名称}

・・・省略・・・

2015-06-22 18:04:45.880  INFO 6640 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 80 (http)
2015-06-22 18:04:45.883  INFO 6640 --- [           main] sbb.Application             : Started Application in 14.704 seconds (JVM running for 18.228)

application.properties で指定したとおり、Tomcat がポート「80」で起動します。

手順4. アプリの起動(ステージング環境)

-Dspring.profiles.active=staging を引数に追加して、ステージング環境として起動します。

> java -jar -Dspring.profiles.active=staging {jar名称}

・・・省略・・・

2015-06-22 18:11:39.344  INFO 3508 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2015-06-22 18:11:39.347  INFO 3508 --- [           main] sbb.Application             : Started Application in 11.484 seconds (JVM running for 12.122)

application-staging.properties の設定値が優先されて、Tomcat がポート「8080」で起動します。ポート番号以外の設定は、application.properties の設定と同じです。差分の設定値だけ上書きされるイメージです。

補足. 他の環境で起動する

ステージング環境だけではなく、他の環境の設定ファイルを用意して切り替えることもできます。そのためには、設定ファイル「application-{環境名}.properties」を作成して、引数「-Dspring.profiles.active={環境名}」を指定して起動すれば大丈夫です。

例. プロダクション環境の場合

プロダクション環境(本番環境)を production という文字列で識別する場合、ファイル名とアプリ起動時の引数は次のようになります。

  • 設定ファイル名:application-production.properties
  • 起動時の引数:-Dspring.profiles.active=production

アプリ起動コマンドは、下のような感じになります。

> java -jar -Dspring.profiles.active=production {jar名称}