親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Spring Bootで環境変数等の定義ファイルの値を取得する方法

Spring Bootの定義ファイル

Spring Bootでは、プロパティ値を設定する定義ファイルとして、application.ymlやapplication.propertiesがありますね。
設定する内容としては、以下にあります通り多岐に渡ります。
https://spring.pleiades.io/spring-boot/docs/current/reference/html/application-properties.html

DBに接続するために必須の設定だったり、ログの出力レベルを変更するために使用されたりなど、使用する場面は多いことでしょう。
主に環境変数の設定に使用されたりしますね。

ちなみにここで設定した値をJavaのソース上でも利用できます。

Javaのソースで値を取得する方法

方法はいたって簡単。
@Valueというアノテーションを使用すれば良いのです。

例として以下のようにapplication.ymlにsamplePropertyというプロパティ値があるとします。

application.yml

sampleProperty: test


これをJavaから呼び出したい場合、以下のように@Valueアノテーションを使用して記述することでインスタンス変数として使用することができるのです。

@Controller
public class SampleController {

	@Value("${sampleProperty}")
	private String sampleProperty;

}


ついでにapplication.ymlに階層でプロパティ値を設定している場合、

application.yml

sampleProperty:
  property1: test


これをJavaから呼び出したい場合は以下のようにすれば呼び出せます。

@Controller
public class SampleController {

	@Value("${sampleProperty.property1}")
	private String sampleProperty;

}

どんな時に使用する?

プログラムをするにあたり、定義ファイルは使い所が多いですよね。
DBの接続先やログの出力レベルは当然のこととして、
外部アクセスをする際のURLやキー等を配置しておくことが多いのではないでしょうか。
汎用的に使用したい設定値はまとめて記述しておきたいと思うものなので、上記のようにソースからも使用してみるのはいかがでしょうか。