概要
SpringBoot 2.4以降で、従来できていたapplication.yml関連の複数に分けている設定ファイルのincludeができなくなり、別の方法で分割したyamlファイルを読み込むようにしないといけないようです。
https://spring.io/blog/2020/08/14/config-file-processing-in-spring-boot-2-4
色々調べながら実装したのですが、理解するのに時間がかかったので、備忘のために記録として残します。
yamlファイルの構成
以下4つのYAMLファイルを用意しています。
application-common
は環境に依存しない共通の設定を管理し、***-local
と***-staging
は環境に依存した設定を管理しているYAMLファイルです。(local=ローカル開発環境、staging=ステージング環境)
.
├── application.yml
├── application-common.yml
├── application-local.yml
├── application-staging.yml
spring.profiles.groupを使って複数に分かれているyamlを読み込む設定をする
application.ymlの定義として以下のように定義します。
spring:
profiles:
group:
local:
- common
- local
staging:
- common
- staging
個人的にわかりづらい点として、
- どのファイルをグループ化するにしても、「application-」という名前の定義ファイルを用意すること。
- 「application-」と名前をつけたファイルの、「common」「local」「staging」だけを列挙して指定すること。
というのが、見ててわかりづらいなと思いました。
別に以下のように記述したっていいじゃないかと。
spring:
profiles:
group:
local:
- application-common
- application-local
staging:
- application-common
- application-staging
とりあえず、上記設定をした状態で、私のローカル開発環境の場合は、Eclipseの実行の構成から、
プログラムの引数
に--spring.profiles.active=local
と設定して実行することで、環境ごとの定義情報をロードしてSpringBootを起動することができました。