0

我有一个类 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() {...}

在我的主要工作中,即 Worker 类中,我有:

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();   

}

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

4

1 回答 1

0

首先,默认情况下,Guice 启用了按需注入,所以如果你的A,BC是非抽象类,你的模块可能是空的。如果您向 Guice 请求Worker类实例,Guice 将自动解析依赖项:

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

在这里,Guice 将自动创建A,BC实例并将其提供给Worker构造函数。

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

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

    Worker worker = injector.getInstance(Worker.class);
    worker.run();
}
于 2013-07-22T11:07:48.190 回答