2013-05-05 65 views
2

我試圖在我的項目之一匕首,我遇到這種情況: 「只有我聲明該類作爲模塊定義中的入口點的字段注入纔有效。匕首現場注射和入口點

這是正確的行爲嗎?

如果Messenger.class沒有聲明爲入口點,則下面的依賴項不會被注入到Messenger類中。構造函數注入器工作正常,但我不想聲明多參數構造函數。

public class Messenger implements NetworkInterfaceListener { 
    @Inject public NetworkInterface networkInterface; 
    @Inject public MessageFactoryInterface messageFactory; 
    @Inject public Bus bus; 
    @Inject public Logger log; 
    ... 
    ... 
} 

回答

3

你只有兩種選擇:要麼宣佈注射的構造與所有PARAMS被注入或爭取全班分成entryPoints(現在叫injects)你的匕首模塊和默認的構造函數中調用mGraph.inject(this)(或每當你需要實際上「注入」甚至可能在課外)。

+1

此外,根據['dagger'](http://square.github.io/dagger/)站點,「如果您的模塊的綁定將用於列出的注入之外,則將該模塊標記爲庫」 ,使用'@Module(library = true)'註釋 – 2013-10-12 07:30:40