Spring Bootの@ConfigurationPropertiesアノテーションの使い方

Spring Bootの@ConfigurationPropertiesアノテーションの使い方

@ConfigurationPropertiesでapplication.ymlに記述した値を読み込みます。

application.yml

system:
  user: takahashi
  pass: takahashi20190101

このようなapplication.ymlがあるとして、このファイルに対応するコンポーネントクラスを用意します。SampleComponentクラスとします。

package jp.co.confrage;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;

@Component
@ConfigurationProperties(prefix = "system")
@Data
public class SampleComponent {
  private String user;
  private String pass;
}

@Dataを@Valueにすると、String型のプロパティの場合はエラーになります。

private final Map<String, String> user;というようにMap型にする場合、@Valueアノテーション(lombok.Value)でSetterを削除することが可能です。

メインのクラスでSampleComponentをDIしています。

package jp.co.confrage;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import lombok.AllArgsConstructor;

@SpringBootApplication
@AllArgsConstructor
public class ConfigurationPropertiesApplication implements CommandLineRunner{
  private final SampleComponent prop;
  public static void main(String[] args) {
    SpringApplication.run(ConfigurationPropertiesApplication.class, args);
  }

  @Override
  public void run(String... args) throws Exception {
    System.out.println(prop.getUser());
    System.out.println(prop.getPass());
  }
}

application.propertiesに定義した値が出力されます。

takahashi
takahashi20190101

@Value(org.springframework.beans.factory.annotation.Value)で値を設定する

@Valueアノテーションで設定ファイル(application.yml)の値を直接設定することが出来ます。

メンバ変数に対して@Valueアノテーションを付加します。

@Value("${spring.data.str}")
private String str;

${spring.data.str}というプレースホルダを指定することで、application.ymlの設定値を直接設定することが可能になります。

spring:
  data:
    str: hogehoge #この値が直接取得できる

@Valueを使って直接取得することができるのですが、コントローラやサービスクラスで@Valueアノテーションを使うより、@Component、@ConfigurationPropertiesアノテーションを使用して、POJOクラスを作成してymlファイルの値を取得して、そのクラスをBean登録したほうが良いです。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました