LoginSignup
17
22

More than 5 years have passed since last update.

Spring Boot の application.properties (yml) でプロパティが重複したときの挙動

Last updated at Posted at 2016-03-04

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 の方で、このプロパティを設定して、取込む側と、取込まれる側で、同じプロパティが設定された場合に、どちらの設定値が有効になるか、というものです。
以下のようなファイルをイメージしてもらうと良いかと思います。

application.properties
spring.profiles.include=test
server.port=8080
application-test.properties
server.port=18080

3.png

結果はと言うと、取込まれる側の値が有効になります。
つまり先の例であれば、server.port の値は、"18080" が有効になります。

include というプロパティ名から、取込む側の値が有効になるかと思いきや、include 先である取込まれる側の値が有効になるので注意が必要です。
この挙動をうまく使うと、記述する設定値の量を減らすこともできるので、おさえておきたい。

17
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
22