Spring Boot 定義ファイル読込

Spring Bootアプリケーションで定義ファイルの値をString型以外で取得してみた

Spring Bootアプリケーションでは、application.propertiesの値を@Valueアノテーションを利用して取得できるが、定義ファイルから取得した値は、String型以外も利用できる。

今回は、定義ファイルから取得した数値を、Integer型・int型・String型の各値に格納してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

サンプルプログラムの構成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、今回作成・変更したプログラムである。

application.propertiesの内容は以下の通りで、各プロパティ値を定義している。

また、Spring Bootのメインクラスの内容は以下の通りで、Demoサービスクラスを呼び出している。

さらに、Demoサービスクラスの内容は以下の通りで、プロパティファイルの値を、Integer型・int型・String型それぞれで読み込んでいる。

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Demoサービスクラスのprop4の@Valueアノテーションを、以下の赤枠のようにコメントアウトした状態にする。
サンプルプログラムの実行結果_1

2) 1)の状態でDemoサービスクラスの「DemoApplication.java」を実行した結果は以下の通りで、prop1,prop3,prop5は取得した各値が、prop2にはNULL値が、prop6には空文字が、それぞれ設定されることが確認できる。
サンプルプログラムの実行結果_2

3) Demoサービスクラスのprop4の@Valueアノテー-ションを、以下の赤枠のようにコメントアウトを外した状態にする。
サンプルプログラムの実行結果_3

4) 3)の状態でDemoサービスクラスの「DemoApplication.java」を実行した結果は以下の通りで、UnsatisfiedDependencyExceptionがスローされることが確認できる。
サンプルプログラムの実行結果_4

要点まとめ

  • Spring Bootアプリケーションで取得したプロパティファイルの値は、Integer型など、String型以外も利用できる。
  • 定義ファイルから取得した値が空文字だった場合、Integer型の変数にはNULL値が、String型の変数には空文字が、それぞれ設定される。