Guice将多个参数注入构造函数

时间:2013-07-22 09:23:10

标签: java guice

我有一个类Worker,它有一个构造函数,它接受3个参数,每个参数都是一个有自己依赖的类。

private A a; private B b; private C c;

@Inject
public Worker(A a, B b, C c) {
    this.a = a; this.b = b; this.c = c; 
}


public void run() {...}

在我的主要工作室中,我有:

public void main(String[] args) throws Exception {
    Injector injector = Guice.createInjector(new WorkerModule());
    a = injector.getInstance(A.class);
    b = injector.getInstance(B.class);
    c = injector.getInstance(C.class);

    run();   

}

我的问题是,如何配置我的模块以允许getInstance for Worker(即injector.getInstance(Worker.class))所以我不必为不同的依赖类调用3 injector.getInstances?而且,我应该如何在工人阶级中分配工人?感谢。

1 个答案:

答案 0 :(得分:0)

首先,默认情况下,Guice启用了按需注入,因此如果您的ABC是非抽象类,则您的模块可能为空。如果您要求Worker类实例:

,Guice会自动解析依赖关系
Worker worker = injector.getInstance(Worker.class);

此处Guice会自动创建ABC个实例,并将其提供给Worker构造函数。

其次,您的main方法是非静态的。它不能作为您的程序的入口点。你应该把它变成静态的。然后它看起来像这样:

public static void main(String[] args) throws Exception {
    Injector injector = Guice.createInjector(new WorkerModule());

    Worker worker = injector.getInstance(Worker.class);
    worker.run();
}