Spring Boot

定義ファイルの設定値をJavaプログラムから取得してみた

Spring Bootの設定値は、定義ファイルである「application.yml」や「application.properties」で定義するが、その設定値はJavaのプログラムから取得することもできる。

今回は、@Valueアノテーションを利用して単独の設定値を取得する方法と、@ConfigurationPropertiesアノテーションを利用して複数の設定値をまとめて取得する方法の両方を試してみたので、そのサンプルプログラムを共有する。

なお、@Valueアノテーション・@ConfigurationPropertiesアノテーションについては下記サイトを参照のこと。
https://qiita.com/cfg17771855/items/905da3100ae99c5197f0

前提条件

下記記事の「IntelliJ IDEA上でSpring Bootプロジェクトの読み込み」まで完了していること。

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

サンプルプログラムの内容

まず最初に、定義ファイルに「application.yml」を利用して作成した、サンプルプログラムの構成は以下の通り。
サンプルプログラムの構成1
なお、上記の赤枠のうち、「build.gradle」は今回変更したプログラムで、他は新規で作成したプログラムとなる。

まず、build.gradleは以下の通りで、lombokの設定を追加している。

また、application.ymlは以下の通りで、ポート番号とデータベース接続情報を設定している。

単独の設定値を取得するプログラムは以下の通り。@Valueアノテーションにより、application.ymlに定義したポート番号が取得できるようになっている。

また、複数の設定値をまとめて取得するプログラムは以下の通り。

prefixで指定した配下にある設定値であるデータベース接続情報が、url, username等のインスタンス変数に設定される。また、url, username等のインスタンス変数の設定をするSetter/Getterメソッドを利用できるようにするため、lombokの@Dataアノテーションを付与している。

さらに、コントローラクラスのプログラムは以下の通りで、前述の単独の設定値(ポート番号)を取得するプログラム・複数の設定値(データベース接続情報)をまとめて取得するプログラムをそれぞれ呼び出している。

また、HTMLファイルの内容は以下の通りで、取得したポート番号とデータベース接続情報を表示している。

Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスした場合の実行結果は以下の通り。
サンプルプログラムの実行結果

なお、「application.yml」を「application.properties」に変更した場合も同様の結果となる。
この場合のサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成2

また、application.propertiesの内容は以下の通り。

要点まとめ

  • 定義ファイルである「application.yml」や「application.properties」の設定値を、Javaプログラムから取得するには、@Valueアノテーションや@ConfigurationPropertiesアノテーションを利用すればよい。