Contents
【準備】プロパティファイルを環境ごとに名前を変えて用意する
プロパティファイルはapplication.properties/ymlである。
ファイル名に「-xxx」をつけて、環境分用意する。
server.port=8080
server.port=5000
server.port=XXXX
【ローカル】開発環境で実行するときに切り替える
Eclipseの場合
プロジェクトを右クリック>実行>実行の構成 のSpringBootタブで指定できる。
プロファイルという項目の値に、「application-xxx.properties」の「xxx」を指定すれば良い。
- application.properties なら、何も指定しない。
- application-prod.properties なら、「prod」と記述する。
- application-hoge.properties なら、「hoge」と記述する。
実行時のログで、環境が切り替わっていることがわかる。
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.2)
2021-07-21 22:06:53.809 INFO 13372 --- [Main] jp.co.xxx.shop.ShopApplication : Starting ShopApplication using Java 15.0.2 on DESKTOP-8J02B7R with PID 13372 (C:\pleiades\workspace\shop\target\classes started by Noric in C:\pleiades\workspace\shop)
2021-07-21 22:06:53.812 INFO 13372 --- [Main] jp.co.xxx.shop.ShopApplication : The following profiles are active: hoge
「The following profiles are active: hoge」
この部分が、指定している環境である。
gradle bootRunの場合
コマンドからgradle bootRunする場合は、次のようにオプションで指定できる。
> gradle bootRun --args='--spring.profiles.active=hoge'
【本番】本番環境で実行するときに切り替える
javaコマンドの引数で指定する
サーバーにはGradle bootJarで作成した実行可能jarをデプロイする。
その時、次のように「Dspring.profiles.active」オプションでプロパティファイルを指定できる。
$ java -Dspring.profiles.active=hoge -jar target/shop-0.0.1-SNAPSHOT.jar
環境変数で切り替える
環境変数 SPRING_PROFILES_ACTIVE に値をセットした後、jarを実行することで切り替えることができる。
$ export SPRING_PROFILES_ACTIVE=hoge
$ java -jar target/shop-0.0.1-SNAPSHOT.jar
profileは複数指定可能
-Dspring.profiles.active=hoge1,hoge2
どのような指定方法でも、上記のように複数のprofileを指定できます。
どんな種類の環境を用意する?
一般的には、次のような環境を用意する。
- ローカル開発環境用→application.properties or application-dev.properties or application-development.properties
- テスト環境用→application-test.properties
- 本番環境用→application-prod.properties or application-production.properties