问题描述
我有一个允许连接到数据库的库模块。对于依赖注入,我在我的模块中使用了 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 (将#修改为@)