我是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()方法。更糟糕的是,如果我有很多這樣的服務,我必須根據交叉依賴性明確地管理關閉順序。
有什麼建議嗎?
我發現LifeGycle(http://99soft.github.io/lifegycle)應該有助於管理注入對象的生命週期。我會試一試。 – dux2