Spring Boot のコンフィグレーションファイルとなる application.properties
または、application.yml
は、application-{profileName}.properties
という命名で、プロファイルごとに設定を用意、切り替えができることは広く知られているところ。
公式のドキュメントにも同様のことが書いてあります。
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-profile-specific-properties
Spring Boot のプロファイルに関するプロパティは2つあり、それぞれ以下のような機能を持ちます。
プロパティ | 機能 |
---|---|
spring.profiles.active |
プロファイルを切り替える。 |
spring.profiles.include |
プロファイルを取り込む。 |
今回問題にするのは、spring.profiles.include
の方で、このプロパティを設定して、取込む側と、取込まれる側で、同じプロパティが設定された場合に、どちらの設定値が有効になるか、というものです。
以下のようなファイルをイメージしてもらうと良いかと思います。
spring.profiles.include=test
server.port=8080
server.port=18080
結果はと言うと、取込まれる側の値が有効になります。
つまり先の例であれば、server.port
の値は、"18080" が有効になります。
include
というプロパティ名から、取込む側の値が有効になるかと思いきや、include 先である取込まれる側の値が有効になるので注意が必要です。
この挙動をうまく使うと、記述する設定値の量を減らすこともできるので、おさえておきたい。