開発環境と本番環境でapplication.propertiesファイルの一部が異なっていて、最初はいちいち書き換えてたけど、めんどくさくなってapplication.propertiesファイルを切り替える方法がないかと検索してみました。
ぐぐってみると、開発環境用のapplication-dev.propertiesと本番用の application-prod.propertiesを用意して、
application.propertiesファイルに
spring.profiles.active=dev
みたいなのを書いて、切り替える方法があったけど、そこをいちいち書き換えるのがめんどくさいわけで。
結論としては、用意するファイルはふたつ。
- application.properties - 本番環境用
- application-dev.properties - 開発環境用
で、開発環境では、環境変数を設定してやります。
$ export SPRING_PROFILES_ACTIVE=dev
この状態でSpring Bootを起動してやると、「The following 1 profile is active: "dev"」と出ます。(右端に出てるので横にスクロールしてください。)
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.6) 2023-04-24T19:27:53.463+09:00 INFO 87016 --- [ main] hoge.HogeApplication : Starting HogeApplication using Java 19.0.2 with PID 87016 2023-04-24T19:27:53.464+09:00 INFO 87016 --- [ main] hoge.HogeApplication : The following 1 profile is active: "dev" ←ココ
つまり、active なのは dev ですよっとメッセージが出ます。
ただし、気をつけないといけない点があります。
application.properties ファイルは、必ず読み込まれるので、そちらの設定はすべて読み込まれています。
「active: "dev"」の場合は、application.properties ファイルの内容を application-dev.properties で上書きするような動作になるので、開発環境では関連箇所をすべて上書きする設定を書いてやる必要があります。