##はじめに
このページは主に自分の思い出し用みたいなものです。
##手順
ものすごくざっくり書くと下記の順番となる。
1.プロパティファイルに設定したい値を書く
2.設定読み込みクラスを作る
3.Autowiredして使う
##プロパティファイル(application.yml)
例えば下記のようなapplication.ymlがあったとして
ymlSetting:
stringKey: "なにかしらの文字列"
mapA:
key1: "value1"
key2: "value2"
##プロパティファイルを読み込むクラス
application.ymlから値を読み込み、格納するクラスを作成します。
「@ConfigurationProperties」アノテーションのprefixにはapplication.ymlのキーを設定します。
そうすると、このクラスではこの定義を読み込むよー、ということを定義することができます。
(例ではSettingクラスではymlSettingの配下の設定値を読み込むよーと定義しています)
定義したそれぞれの項目はメンバ変数として保持する作りとなっています。
ネストしていない項目(stringKey)はString型で、
子要素がある項目(mapA)はMapとして宣言することができます。
プロパティファイルの値を参照する際は、宣言したメンバ変数のGetterを利用して値を参照することとなります。
Settings.java
package jp.co.sample;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "ymlSetting")
public class Settings {
private String stringKey;
private Map<String, String> mapA;
public void setStringKey(String stringKey){
this.stringKey = stringKey;
}
public String getStringKey(){
return stringKey;
}
public void setMapA(Map<String, String> mapA){
this.mapA = mapA;
}
public Map<String, String> getMapA(){
return mapA;
}
}
##使い方例
例えばプロパティ値を標準出力する場合、こんな感じとなります。
SpringBootConfigApplication.java
package jp.co.sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootConfigApplication implements CommandLineRunner{
@Autowired
private Setting setting; // プロパティファイル読み込み用クラス
public static void main(String[] args) {
SpringApplication.run(SpringBootConfigApplication.class, args);
}
@Override
public void run(String... args) {
System.out.println("string = " + Settings.getStringKey());
System.out.println("key1 = " + Settings.getMapA().get("key1"));
System.out.println("key2 = " + Settings.getMapA().get("key2"));
}
}