設定ファイルを作成する

DropWizardは起動時に設定ファイルを指定できるようになっていて、開発環境用、本番環境用と手軽に起動方法を変更可能となっている。
試しにこんな設定ファイルを指定して起動させてみよう。

Sample001直下に conf/dev.yml を作成

中身はこんなカンジ

mail: hoge@example.jp

Sample001Configuration.java を修正

public class Sample001Configuration extends Configuration {
	@NotEmpty
	private String mail;

	@JsonProperty
	public String getMail()
	{
		return mail;
	}

	@JsonProperty
	public void setMail(String mail)
	{
		this.mail = mail;
	}
}

@JsonProperty により、自動的にymlファイルから設定値を読み込んでくれる

Sample001Application でconfigurationクラスにアクセスできるようにする

※この実装でいいのかどうかちょっと不明。

public class Sample001Application extends Application<Sample001Configuration> {

	private static Sample001Configuration configuration;
	public static void setConfiguration(Sample001Configuration configuration)
	{
		Sample001Application.configuration = configuration;
	}
	public static Sample001Configuration getConfiguration()
	{
		return configuration;
	}

	public static void main(final String[] args) throws Exception {
		new Sample001Application().run(args);
	}

	@Override
	public String getName() {
		return "Sample001";
	}

	@Override
	public void initialize(final Bootstrap<Sample001Configuration> bootstrap) {
		// TODO: application initialization
	}

	@Override
	public void run(final Sample001Configuration configuration, final Environment environment)
	{
		Sample001Application.setConfiguration(configuration);

		final SampleResource resource = new SampleResource();
		environment.jersey().register(resource);
	}

}

SampleResource で、Configuration の値を取得する

	public Map<String, String> hoge()
	{
		final Sample001Configuration conf = Sample001Application.getConfiguration();

		Map<String,String> result = new HashMap<>();
		result.put("key1", "val1");
		result.put("mail", conf.getMail());
		return result;
	}

ビルド&実行

ビルドはいつものと同じだが、実行時に設定ファイルを指定するので若干変わる

  • % mvn package
  • % java -jar target\Sample001-1.0-SNAPSHOT.jar server conf\dev.yml

http://localhost:8080/hoge にアクセス

{"key1":"val1","mail":"hoge@example.jp"}

と表示されれば成功