Spring Bootで外部設定ファイル(yaml)の値を取得する方法

Spring Bootで外部設定ファイル(yaml)の値を取得する方法です。

Spring Bootで外部設定ファイル(yaml)の値を取得する方法

以前、「Spring Bootで設定ファイル(yaml)を読み込む方法」で紹介した @ConfigurationProperties は、@ConficurationProperties が付けられた Bean が SpringDI に登録されると Setter を通じてプロパティの値が設定されるというものでした。

これ以外にも SpringFramework に備わった機能で application.properties や application.yml に設定した値を取得することができます。

今回は @ConfigurationProperties以外の方法を使い、Spring Bootで外部設定ファイル(yaml)の値を取得する方法 を紹介します。


@Valueを使う

@Value(${設定名:デフォルト値})の形式で指定すれば値が取れます。

仮に application.yml にこのような設定があったとします。

hello: world

この場合、下記ように記述すれば値が取得できます。
  @Value("${hello}")
  public String message;

  public void helloworld() {
    System.out.println(message); // world が出力される
  }

ふむ、簡単ですね^^

Environmentインタフェースを使う

次に Environment インタフェースのメソッドを利用して取得する方法です。

仮に application.yml にこのような設定があったとします。

spring:
  profiles:
    active: dev
  thymeleaf:
    mode: HTML
hello: world

「spring.profiles.active」の値を取得するには下記のように記述します。

  @Autowired
  private Environment environment;

  public void mode() {
    System.out.println(environment.getProperty("spring.profiles.active"));  // dev が出力される
  }

ふむふむ、簡単ですね^^

まとめ

Spring Bootで外部設定ファイル(yaml)の値を取得する方法を紹介しました。

個人的には @ConfigurationProperties を使って Bean に自動インジェクションさせる方法がいいと思います。getter/setter の記述は Lombok を利用することで省略できるし、なんといっても Spring Boot が提供している仕組みですからね、Spring Boot を使うんだったらこれが一番なんだろうと勝手に思っています^^;

とまあ、やり方は色々ありますが、外部設定値を取得する方法を覚えて実務に役立てましょうね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。