2012-07-05 96 views
2

這是人們會問的那些奇怪問題之一 - 爲什麼?分階段加載彈簧環境

因此,我將首先介紹爲什麼我想這樣做然後進入問題。我想對彈簧上下文的加載有更多的控制。例如,我不想同時加載域和web-api。這將在資源依賴準備就緒之前使資源可用。 在我能繼續這個過程之前,我可能還需要檢查一些事情的狀態。所以說,模塊/上下文之間會有順序排列。也許不僅僅是啓動,還有關機。

所以問題是,我找不到任何關於如何加載域上下文的信息,那麼當完成時我會檢查狀態並最後加載api-context。我想從java代碼中完成所有這些,因爲我需要控制啓動的流程。我有基本的使用SpringServlet加載web上下文。我沒有找到任何信息是,如果可以加載上下文,請等待並加載另一個引用第一個上下文的上下文。

可能很高興知道我沒有使用JavaEE和容器。我只用servlet和spring來嵌入Jetty。那麼有沒有辦法做到這一點?

回答

0

我建議考慮以下幾點:

  • 閱讀SmartLifeCyclePhased的應用程序上下文的生命週期管理秩序的擴展點。這個想法是,您的頂級重要bean實現了接口,這樣標準應用程序上下文初始化也將按照您自定義的順序處理這些bean。
  • 將您的應用程序上下文XML文件分解爲更小的部分。使用<import />取決於更高/更低的上下文。
  • 在您的關鍵任務bean上使用depends-on屬性來確保依賴關係。
  • 使用InitializingBean來確定當前bean初始化後需要的依賴關係。
0

考慮惰性加載的Bean和惰性代理。 所以這個bean只會在第一次使用時創建...