2014-04-19 88 views
1

我有一個具有以下結構的類。Dagger - Inject同時向字段變量和構造函數提供bean

在Dagger中,它是「合法的」@同時在域變量和構造函數中注入bean,正如我在下面所做的那樣?如果不是 - 我有一個MyActivityModule和MyApplicationModule,如何從MyApplicationModule獲取依賴關係並將它們添加到我在MyActivityModule的provideWhatEvery中使用的構造函數中?

@Inject SmsFormatter mSmsFormatter; 
@Inject SmsGuardiansUtils smsGuardiansUtils; 
@Inject BipperMediaPlayer bipperMediaPlayer; 
@Inject MixPanelUtils mMixpanelUtils; 


@Inject 
public ImHereController(View view, Context context, AlarmModel alarmModel, ActionBarListener actionBarListener, 
     FragmentController fragmentController){ 
    super(view, context, alarmModel, actionBarListener, fragmentController); 
} 

回答

0

你可以像你一樣注入字段和構造函數。構造函數參數將首先解析並在構建時注入,然後將注入這些字段。

問題的其他部分不清楚 - 無論你是通過字段注入還是構造函數注入來添加依賴項 - 如果你想用構造函數注入來添加它們,你可以。

唯一一次必須使用字段注入就是你有一個對象的實例,你無法控制的,因此匕首本身不能實例(如行爲和應用亞型。)

所有這一切說,我會如果沒有一些令人信服的理由,不要使用它們 - 構造器注入的語義更清晰,並且可以使實例變量最終生效。或者,現場注入更簡潔,並且可能更易於閱讀。我會選擇一個,而不是兩個。

+0

再次測試它,它工作,設法通過字段變量和通過構造函數添加! 。不知道爲什麼它沒有起作用,我開始瞭解如何將這些零件連接在一起之前,必須在開始時錯誤地配置了這些bean。 感謝您的幫助:) –

相關問題