JDBC 接続を返すクラスを Guice しようとしています。接続と資格情報は、クラスによって異なる場合があります。
Guice でこの問題を処理する最も簡単な方法は何ですか?
元:
a.java -> URL: localhost ユーザー: foo b.java -> URL: リモートサーバー ユーザー: bar
Guice では、コンストラクターで @Named アノテーションを使用して、次のように、作成するオブジェクトに正しい値が注入されるようにすることができます。
@Inject
MyObject(@Named("jdbc.url") String jdbcUrl) {
...
}
これらはどこから来たのですか?*Module クラスでは、次のようにプロパティをロードする必要があります。
public class MyModule extends AbstractModule {
@Override
protected void configure() {
// Handle exceptions, or this won't compile
Properties properties = new Properties();
ClassLoader loader = MyModule.class.getClassLoader();
URL url = loader.getResource("my.properties");
properties.load(url.openStream());
Names.bindProperties(binder(),props);
// Do the binding
bind(bla).to(Bla.class);
}
}