設定ファイルを作成する
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