Spring Bootで定義ファイル(yaml)を参照する(2) – 定義ファイルを外出しする

2017.02.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

以前、Spring Bootで定義ファイル(yaml)を参照するでSpring Bootで定義ファイルを参照する方法について書きました。この時の定義ファイルはjar内に組み込まれていたのですが、今回は定義ファイルを外出しとする方法について書きたいと思います。

方法について

とはいっても非常に簡単です(笑)。実装に変更はなく、jarの起動時に参照する定義ファイルのパスを渡すだけです。以下の書式になります。

$ java -jar jarファイルパス --spring.config.location=定義ファイルパス

(余談)定義ファイルの値の読み込み

前回(yaml)を参照するは定義ファイルの読み込みに「@ConfigurationProperties」アノテーションを使用して、yamlのネストした定義をMapに取込み → Mapから任意のキーの値を取得としていました(Settings・ConfigReaderクラスを参照)。

今回は「@Value」アノテーションを使用することで、定義ファイルの値をメンバ変数に格納できるようにしました。(クラス名を「SimpleConfigReader」とします)

package com.sample;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class SimpleConfigReader {
	@Value("${settings.region}")
	private String region;

	@Value("${settings.s3.bucket}")
	private String bucket;

	@Value("${settings.s3.file}")
	private String file;

	public String getRegion(){
		return region;
	}

	public String getBucket(){
		return bucket;
	}

	public String getFile(){
		return file;
	}
}

こちらの方がシンプルですね。

参考サイト

24. Externalized Configuration