2013-12-10 42 views
1

我是Windsor Castle(.NET)的一員,在Google Guice工作很久以後纔開始使用Google Guice。Google Guice中的自動啓動和停止服務

我想在Google Guice中實現類似於Windsor Castle Startable Facility(http://docs.castleproject.org/Windsor.Startable-Facility.ashx)的功能。

這意味着一旦綁定並且滿足所有依賴關係,注入器將自動創建單件服務的實例。

我想在服務創建時調用start()方法,在應用程序關閉時調用stop()方法。例如,start()會初始化一個定時器,stop()通常會取消該定時器。

我知道的渴望單身的特徵「.asEagerSingleton()」,但我能想到的一些問題吧:

(1)如果我做的方法注入的服務,該服務的構造函數在方法注入依賴關係被設置之前調用。因此,我可能無法在施工時間內完全使用該服務。

(2)沒有自動關機。我必須在應用程序關閉邏輯中手動獲取服務的實例,並調用stop()方法。更糟糕的是,如果我有很多這樣的服務,我必須根據交叉依賴性明確地管理關閉順序。

有什麼建議嗎?

+0

我發現LifeGycle(http://99soft.github.io/lifegycle)應該有助於管理注入對象的生命週期。我會試一試。 – dux2

回答

4

我建議你試試Netflix's governator,它有類路徑掃描和自動綁定,生命週期管理,配置到現場映射,現場驗證和並行化對象預熱。