2012-06-18 132 views
0

有人可以解釋Spring xml配置文件中bean初始化的順序嗎?在某些情況下,它似乎依賴於訂單,但我無法找到任何指示這種情況的文檔。當使用單個配置文件時,bean順序似乎是獨立的。但是,如果在父配置中重寫bean,則順序可能很重要。我需要做額外的測試來確認究竟是什麼情況導致這種失敗。我正在使用Spring 3.0.5,並使用配置文件在生產代碼中用模擬實現覆蓋bean。這些bean被自動裝入服務中,並且模擬對象是爲什麼需要重寫。任何有關這方面的見解將不勝感激。Spring XML初始化命令

回答

0

訂購有時顯著,我能想到的這些情況:後來用完全相同的名稱定義

  1. 豆類覆蓋前面定義的豆類 - 所以如果你有嘲笑了一些豆子,只是把它定義核心應用程序bean加載完成後。
  2. BeanFactoryPostProcessor和BeanPostProcessors根據其定義位置或基於order屬性(如果存在)進行處理。
  3. AOP通知根據order屬性執行。

您的情況似乎被第一點所覆蓋,但我只是指定了其他人的完整性,肯定會有更多其他SO用戶可以添加。

+0

我的mocked bean在子上下文中重寫了父上下文中具有相同名稱的bean。子上下文導入父項。我認爲這意味着初始化父上下文,然後是子上下文,但似乎並非如此。你能澄清如何確保一個上下文文件在覆蓋之前被完全加載嗎? –

+0

如果你現在在子上下文中有一個帶有bean1 - 「'的'parent-context.xml'文件,你必須這樣做:'「,所以現在在定義子bean之後導入父上下文,所以父bean將生效 –