我有一个类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?而且,我应该如何在工人阶级中分配工人?感谢。
答案 0 :(得分:0)
首先,默认情况下,Guice启用了按需注入,因此如果您的A
,B
和C
是非抽象类,则您的模块可能为空。如果您要求Worker
类实例:
Worker worker = injector.getInstance(Worker.class);
此处Guice会自动创建A
,B
和C
个实例,并将其提供给Worker
构造函数。
其次,您的main
方法是非静态的。它不能作为您的程序的入口点。你应该把它变成静态的。然后它看起来像这样:
public static void main(String[] args) throws Exception {
Injector injector = Guice.createInjector(new WorkerModule());
Worker worker = injector.getInstance(Worker.class);
worker.run();
}