2013-07-22 55 views
0

我有一個類Worker具有一個構造函數,它需要3個參數,每個參數都有一個具有自己的依賴關係的類。Guice向構造函數中注入多個參數

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工人(即injector.getInstance (Worker.class)),所以我不必爲不同的依賴類調用3個injector.getInstances?而且,我應該如何將工人分配到工人班?謝謝。

回答

0

首先,Guice默認啓用了按需注入,所以如果您的ABC是非抽象類,那麼您的模塊可能是空的。

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

這裏吉斯會自動創建ABC實例,並提供給Worker構造:如果你問它Worker類實例吉斯將自動解決依賴關係。

其次,您的main方法是非靜態的。它不會作爲您程序的入口點。你應該把它變成靜態的。然後它可能看起來像這樣:

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

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

謝謝。有效。 – Mozbi

+0

@默茲比,如果答案有幫助,你應該接受它。這就是stackoverflow的工作原理:) –

相關問題