Spring Boot 9 設定ファイル

設定ファイル読み込み

フォルダ構成

Test
└src
 └main
  └java
   └myPack
    └Test.java
  └resources
   └confing
    └application.properties
    └application-aaa.properties
    └application-bbb.properties
   application.properties (ここでも可)
 pom.xml

設定ファイル

※application.properties
spring.profiles.include=aaa
spring.profiles.include=bbb
test1=test
※application-aaa.properties
test2=aaa
※application-bbb.properties
test3=bbb

読み込み

※Test.java
package myPack;
public class Test implements CommandLineRunner {

 @Value("${test1}")
 private String prm1;

 @Value("${test2}")
 private String prm2;

 @Value("${test3}")
 private String prm3;

 @Value("${test4}")
 private String prm4;

 →エラー(test4という設定項目は無い)

 @Value("${test4:#{null}}")
 private String prm4;
 →OK:(test4という設定項目は無い時はnullが設定される)

 public static void main(String[] args) {
  SpringApplication.run(PostTestApplication.class, args);
 }

 @Override
 public void run(String… arg0) throws Exception {

  System.out.println(prm1);
  prm1:test
  System.out.println(prm2);
  prm2:aaa
  System.out.println(prm3);
  prm3:bbb
 }
}

設定ファイルの配置場所をjar(war)の外に出す

自動で読み込まれるアプリケーション配下、config配下の設定ファイルの他に任意の場所をクラスパスに追加する
Apache Maven 設定方法」参照
なお、この場合アプリケーション配下、config配下の設定ファイルは削除する事

環境毎に設定を変える

フォルダ構成

Test
└src
 └main
  └java
   └myPack
    └Test.java
  └resources
   └confing
    └A
     └application.properties
     └application-aaa.properties
    └B
     └application.properties
     └application-aaa.properties
 pom.xml

※pom.xml
<profiles>
 <profile>
  <id>A</id>
  <activation>
   <activeByDefault>true</activeByDefault>
  </activation>
  <build>
   <resources>
    <resource>
     <directory>src/main/resources/config/A</directory>
    </resource>
   </resources>
  </build>
 </profile>
 <profile>
  <id>B</id>
  <activation>
   <activeByDefault>false</activeByDefault>
  </activation>
  <build>
   <resources>
    <resource>
     <directory>src/main/resources/config/B</directory>
    </resource>
   </resources>
  </build>
 </profile>
</profiles>

設定ファイル

※A/application.properties
spring.profiles.include=aaa
test1=a
※B/application.properties
spring.profiles.include=aaa
test1=b

プロファイルを指定してビルド

> mvn package -P A
> mvn package -P B