17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring Bootでプロパティファイルの値を参照できるようにするまでの手順

Posted at

##はじめに
このページは主に自分の思い出し用みたいなものです。

##手順
ものすごくざっくり書くと下記の順番となる。

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"));
    }
}
17
11
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
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?