Java 使用Guice注入初始化库时如何传递参数?

Java 使用Guice注入初始化库时如何传递参数?,java,dependency-injection,java-8,guice,modularity,Java,Dependency Injection,Java 8,Guice,Modularity,我有一个库模块,可以连接到数据库。对于依赖项注入,我在模块中使用了Guice。然后,服务将使用此模块连接到数据库。在我的库模块中,我有一个类似这样的类 public class DatabaseDAO { @Inject private DatabaseClient dbclient; public CreateIndexResponse createIndex(final CreateIndexData createIndexData) throws IO

我有一个库模块,可以连接到数据库。对于依赖项注入,我在模块中使用了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对象,如下所示,在my Guice module类中

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);
    }
}
目前,我将SERVICE_NAME变量和ENDPOINT变量保留在DatabaseModule中,但是我希望由使用此库的服务插入它们。按照代码现在的方式,服务将如下所示启动DatabaseDAO

 Injector injector = Guice.createInjector(new DatabaseModule());
 dbDAO = injector.getInstance(DatabaseDAO.class);

但是,当服务创建如上所述的注入器时,我希望传递这些变量的值,以便使用库的人能够控制。如何使用Guice实现这一点?任何帮助和指导都将不胜感激。非常感谢您。

辅助注射。关于辅助注入的示例似乎没有详细说明如何从服务传递name参数值。它们似乎显示了我如何在库模块本身中使用辅助注入:(您注入工厂并将参数传递给创建方法。我还有一个问题@BoristheSpider。目前DatabaseModule类向DatabaseDAO类提供db客户端。使用AssistedInject,我将在DatabaseDAO中有一个构造函数并提供两个变量。然后如何将其传递给DatabaseModule以获取db客户端对象?或者我应该在这里对DatabaseDAO获取db客户机的方式进行一些更改吗?