当前位置: 首页 > 面试题库 >

Guice:是否可以注入模块?

翟源
2023-03-14
问题内容

我有一个需要一些模块Depedency。有没有办法可以注入模块本身?我意识到这有点麻烦。

例:

public class MyModule implements Module {

    private final Dependency d_;

    @Inject public MyModule(Dependency d) {
        d_ = d;
    }

    public void configure(Binder b) { }

    @Provides Something provideSomething() {
        // this requires d_
    }
}

我想在这种情况下,解决方案是将@Provides方法转换为完整的Provider<Something>类。这显然是一个简化的示例;我正在处理的代码有很多这样的@Provides方法,因此将它们分成单独的Provider<...>类并引入配置它们的模块会增加相当多的混乱-
我认为Guice就是要减少样板混乱?

也许这反映了我对Guice的相对呆板,但是我遇到了很多尝试着做上述事情的案例。我肯定错过了什么…


问题答案:

@Provides方法可以将依赖项作为参数,就像带@Inject注释的构造函数或方法的参数一样:

@Provides Something provideSomething(Dependency d) {
   return new Something(d); // or whatever
}

这是记录在这里,虽然也许它可以作出更加脱颖而出。



 类似资料:
  • 在Scala中,我可以使用Guice注入Scalas吗? 例如,我可以在以下对象中注入?

  • 主要内容:Google Guice 可选注入 示例,输出注入是将依赖注入对象的过程。可选注入意味着如果存在则注入依赖项。方法和字段注入可能是可选的依赖项,如果不存在依赖项,则应该有一些默认值。请参阅下面的示例。 Google Guice 可选注入 示例 创建一个名为 GuiceTester 的 Java 类。 GuiceTester.java 输出 编译并运行该文件,您将看到以下输出。

  • 问题内容: 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上 ,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string 用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情

  • 我有一个类,我需要注入一个变量,但构造函数没有注入guice。 x的值未被注入。guice是否有必要在构造函数中使用注入来识别方法注入?我是否需要从其他类调用此方法才能工作?Thanx提前

  • 我是Google Guice的新手,从概念上理解依赖注入,但在尝试将其并入我的应用程序时遇到了一些问题。我的具体问题是关于单例对象的。这里有一个例子: 首先是我的模块类,它将一个沉重的单例连接接口绑定到它的实现。 现在,在我的main方法中,我实例化我的应用程序服务器并注入连接: 到目前为止一切顺利...现在,我有一些利用连接对象的DAO类,但使用静态方法检索,如下所示: 我的第一个假设是,我只需

  • 从这个问题,有可能注入map与枚举? 例如,我有枚举: 我有一些与实现的接口: 但这样的注入不起作用: 我想自动注入。如何修复它,在spring框架端生成这样的代码?