我正在尝试 Guice 一个返回 JDBC 连接的类。连接和凭据信息可能因一类而异。
在 Guice 中处理这个问题的最简单方法是什么?
前任:
a.java -> URL:localhost 用户:foo b.java -> URL:remoteserver 用户: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);
}
}