0

我正在尝试 Guice 一个返回 JDBC 连接的类。连接和凭据信息可能因一类而异。

在 Guice 中处理这个问题的最简单方法是什么?

前任:

a.java -> URL:localhost 用户:foo b.java -> URL:remoteserver 用户:bar

4

1 回答 1

0

在 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);
     }
}
于 2013-02-15T05:10:31.763 回答