当前位置: 首页 > 知识库问答 >
问题:

如何在guice中实现依赖I/O

支铭晨
2023-03-14
Injector injector = Guice.createInjector(
    new DatabaseModule(),
    new WebserverModule(),
    ...
);

Service databaseConnectionPool = injector.getInstance(
    Key.get(Service.class, DatabaseService.class));
databaseConnectionPool.start();
addShutdownHook(databaseConnectionPool);

Service webserver = injector.getInstance(
    Key.get(Service.class, WebserverService.class));
webserver.start();
addShutdownHook(webserver);
// I/O in the static method call; returns a module with
// the environment-based objects
EnvironmentModule environment = EnvironmentModule.configureEnvironment(args);

Injector injector = Guice.createInjector(
     environment,
     // the following connects to the database, and returns a module
     // providing the DataSource
     SQLModule.connectToDatabase());

injector = injector.createChildInjector(new BusinessLayerModule());
startTimers(injector);

injector = injector.createChildInjector(
    new ServicesModule(),
    new WebServerModule());

startServer(injector);
    null

共有1个答案

红智鑫
2023-03-14

我的方法和你的第二种方法相似,除了儿童注射器。

首先,创建一个专门用于初始化的模块SQLModule:

Injector initInjector = Guice.createInjector(Stage.PRODUCTION, new SQLModule());
SQLService service = initInjector.getInstance(SQLService.class);
Properties initProps = service.doInit(); // for example

然后创建主模块:

Injector mainInjector = Guice.createInjector(Stage.PRODUCTION, 
                 new SQLModule(), 
                 new MainModule(initProps));
// main program here using the mainInjector
 类似资料:
  • 我已经使用GoogleGuice几个月了。我对它很满意,但似乎我用错了。我创造了很多辅助注射,有时还有两个注射器。 因此,我想了解这里的一般原则。 是否应该为连接主类所有内容的所有应用程序配备一个喷油器? 最佳实践是关于从应用程序一开始就尝试在构造函数中注入大量内容吗?(我看到了测试的优势) 我的主要问题是,有时我觉得某些对象组的创建属于某个组件。有必要封装它吗?你会如何处理? 当您拥有一个重要的

  • 我上了如下的课,效果很好 现在,我没有直接使用EmpService,而是创建了一个接口,EmpService实现了该接口,如下所示。 所以现在我的资源类必须使用接口,但我不确定如何引用它必须使用的实现。 我看到了这个,我不确定我的绑定应该去哪里。(这是我第一个与Guice相关的项目,所以我是一个完全的新手)。 这就是“未绑定com.api.EmpService的实现”出现的错误这完全可以理解,但不

  • 我想在使用guice实例化子类时,将依赖项注入父类。在下面的示例中,我试图创建的一个实例,同时希望能够在运行时使用Guice注入。我该怎么做?

  • 在 cnpm i 安装依赖时 会报 如图错误,问遍度娘未得答案 请问是否有遇到过相同问问题的伙伴,应该如何处理呢? 补充我的 npm 源地址:

  • 问题内容: 我正在学习Google Guice。您知道如何解决“机器人腿”问题吗?让我用一个例子解释一下。 假设我有一个叫做的类: 该接口有两种实现: 我的模块是这样实现的: 好吧,我想知道这是否可能: 是否存在一些让我做到这一点的注释或绑定,让我对like这样的成员进行注释,这有助于Guice知道应该向内部注入实现? 编辑: 感谢丹尼尔·马丁(Daniel Martin)在他的评论中给我们提供了

  • 基于文档(4.7.6 -了解特定的依赖关系),我们可以通过指定配置本身来了解特定的配置。在示例中,他们将配置< code>compile用作不推荐使用的配置。我试图重现相同的命令,将< code>build.gradle中的< code>compile配置替换为< code>implementation配置(正如我所得到的,我们不应该再使用< code>compile)。但是当我跑的时候: Gra