如何解决使用 Guice 注入初始化库时如何传递参数?
我有一个允许连接到数据库的库模块。对于依赖注入,我在我的模块中使用了 Guice。然后服务将使用此模块连接到数据库。在我的库模块中,我有一个看起来像这样的类。
public class DatabaseDAO {
@Inject
private DatabaseClient dbclient;
public CreateIndexResponse createIndex(final CreateIndexData createIndexData) throws IOException {
return dbclient.create(createIndexData)
}
public DBIndexResponse indexDocument(final String indexName,final String jsonDocument) throws IOException {
return dbclient.index(indexName,jsonDocument);
}
}
然后通过 Guice 提供程序注入上面的 dbClient 对象,如下所示在我的 Guice 模块类中。
public class DatabaseModule extends AbstractModule {
private static final String SERVICE_NAME = "myService";
private static final String ENDPOINT = "myEndpoint";
@Override
protected void configure() {
bind(DatabaseDAO.class).toInstance(new DatabaseDAO());
}
@Provides
@Singleton
DatabaseClient provideDBClient(final CredentialsProvider credentialsProvider) {
SomeObject someObject = doSomething(credentialsProvider,SERVICE_NAME,ENDPOINT);
return new DatabaseClient(someObject);
}
}
目前我在 DatabaseModule 中保留了 SERVICE_NAME 变量和 ENDPOINT 变量,但是我希望使用这个库的服务插入它们。按照代码现在的方式,服务将启动DatabaseDAO,如下所示。
Injector injector = Guice.createInjector(new DatabaseModule());
dbDAO = injector.getInstance(DatabaseDAO.class);
但是,当服务像上面一样创建注入器时,我想传递这些变量的值,以便使用库的人可以控制。我如何使用 Guice 实现这一目标?任何帮助和指导将不胜感激。预先非常感谢您。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。