我有一个类,我需要注入一个变量,但构造函数没有注入guice。
public class Foo{
private boolean x;
public Foo(){
//sets some variables
}
@Inject
public void setX(boolean x){
this.x=x;
}
}
x的值未被注入。guice是否有必要在构造函数中使用注入来识别方法注入?我是否需要从其他类调用此方法才能工作?Thanx提前
如果您要使用Guice来@Inject
Foo
,那么Guice需要创建对象——从注入器或从单独类中的另一个@Inject
点。Guice无法帮助您注入它没有创建的对象。
在这种情况下,没有必要向构造函数添加注入,因为Guice可以自动注入无参数构造函数。例如:
public class MethodInjectionTest {
static class Foo {
private boolean x;
public Foo(){
//sets some variables
}
@Inject
public void setX(boolean x){
this.x=x;
}
}
Injector i = Guice.createInjector(new AbstractModule() {
protected void configure() {
bind(Boolean.class).toInstance(Boolean.TRUE);
}
});
@Test
public void methodInjection() {
Foo foo = i.getInstance(Foo.class);
assertThat(foo.x, is(true));
}
// EDIT: An example based on the comment by @JeffBowman
@Test
public void memberInjection() {
Foo foo = new Foo();
i.injectMembers(foo);
assertThat(foo.x, is(true));
}
}
如果您的真实世界类在构建期间需要将GUI控制的依赖项与客户机提供的依赖项混合,请查看辅助注入
有人能帮助实现没有注释的Guice吗? pom。xml 我所尝试的: 我得到的错误是: 我理解这个错误。 但是我希望我可以“指向”Guice到正确的构造函数......而不是使用注释。 如您所见,使用默认/空构造函数不是一个好选择,因为这个示例很简单,但我想坚持使用基于构造函数的注入。 附加: 根据我在评论中从赫曼特·辛格那里得到的“暗示”,我想我离得更近了。 我创建了一个ProductionIn
主要内容:输出注入是将依赖注入对象的过程。构造函数注入很常见。在这个过程中,依赖被作为参数注入到构造函数中。请参阅下面的示例。 创建一个名为 GuiceTester 的 Java 类。 GuiceTester.java 输出 编译并运行该文件,您将看到以下输出。
问题内容: 假设我有一些类似以下的课程。(为简单起见,这是一个虚构类。) 由于我使用不同的实现,并且可能想对该发送功能进行单元测试,因此我认为我应该注入in 的方法。但是我该怎么做呢? 我见过的所有我理解的Guice示例似乎都是在构造函数中进行注入的: 但是我的类在其构造函数中接受了一个参数,我不想注入该参数。那我该怎么办呢? (注意:我是一个完整的Google Guice noob。我认为我了解
请帮助理解在哪种情况下我应该使用构造函数注入和设置器注入。请帮我举个合适的例子。 先谢谢你。
我把下面的内容看做是构造函数和setter注入的区别之一。有人能用一些简单的例子解释一下下面的区别吗,我对术语完全功能对象和不完全对象有点困惑。 -
我正试图从这篇中级文章中学习Dagger2,并将RequestQueue作为活动级依赖项传递:https://proandroiddev.com/dagger-2-annotations-binds-contributesandroidinjector-a09e6a57758f我可以很好地创建应用程序组件,但我在ContributesAndroidInjector方面遇到了很多麻烦。应用类别: 应