Google Guice で system property の値を inejct したい
Names.bindProperties
使おう!
任意の Module の中で以下のように設定する。
@Override
protected void configure() {
final HashMap<String, String> props = new HashMap<>();
// Put default values
props.put("jetty.port", "8080");
for (final Entry<Object, Object> entry : System.getProperties().entrySet()) {
props.put(entry.getKey().toString(), entry.getValue().toString());
}
Names.bindProperties(binder(), props);
}
で、以下のようにできる~
@Provider
public Server provideServer(@Named("jetty.port") int port) {
// ...
}
int や boolean 等の組み込み型を指定した場合、guice がいい感じに変換してくれます。
Published: 2015-05-07(Thu) 23:24