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

Guice-无法创建注入

窦国源
2023-03-14

我使用Guice进行依赖注入,但在我的特定用例中,它给了我这个错误:

interface A {
}
Class B implements A {

  @Inject
  B(String para1, MyClass B) {
     // do something
  }

}
@AllArgsConstructor
public class GuiceModule extends AbstractModule {

@Override
protected void configure() {

    bind(A.class).to(B.class);

}

@Provides
public MyClass provideMyClass() {
    return new MyClass();
}


@Provides
public String provideString() {
    return "string";
}
}
@Inject A a;

共有1个答案

袁单鹗
2023-03-14

您的构造函数应该是公共的,这样guice就可以看到它并注入它。

这里有一些关于guice文档的参考

Class B implements A {

  @Inject
  ***public***  B(String para1, MyClass B) {
     // do something
  }
}
 类似资料:
  • 我们的项目设置如下: 1)主模块:包含一个启动Spark流服务器的驱动程序。它有自己的Guice注入器。 2)当消息进来时,它进入另一个模块,该模块创建它自己的Guice注入器。 3) 此模块使用其他模块中的类,这些模块本身使用依赖模块。这些模块中的每一个都创建了自己的Guice注入器,因此可以独立工作、单独测试等。 这里有一个问题:现在我们需要一个单例,但是作为@Singleton创建的对象绑定

  • 主要内容:Google Guice 方法注入 示例,输出注入是将依赖注入对象的过程。方法注入用于将值对象设置为对象的依赖项。请参阅下面的示例。 Google Guice 方法注入 示例 创建一个名为 GuiceTester 的 Java 类。 输出 编译并运行该文件,您将看到以下输出。

  • 我有一个用例,我使用的是基于Spring的外部jar,而我的代码是基于Googleguice的。 我正在尝试通过编写模块在我的依赖项jar的此类中注入依赖项。 外部类: 我可以在我的模块中使用@provides方法中的setter设置成员,但@inject成员为空,我得到了countEvent和durationEvent的NullPointerException。 我的代码使用下面的provide

  • 假设有一个类A,它的构造函数是这样的: 还有AFactory: 所以要创建一个A的实例,我显然需要做这样的事情: 但是,假设我有其他类:例如,B类、C类和D类具有类型为A的成员(带有字段注入,但也可以是ctor): 我希望将 A 的相同实例注入到这些类中。但仍然可以选择将 A 的另一个实例注入其他类(假设 E 类和 F 类)。 正确的做法是什么?我就是想不出一个干净的方法来做到这一点。

  • 主要内容:输出注入是将依赖注入对象的过程。构造函数注入很常见。在这个过程中,依赖被作为参数注入到构造函数中。请参阅下面的示例。 创建一个名为 GuiceTester 的 Java 类。 GuiceTester.java 输出 编译并运行该文件,您将看到以下输出。

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。