2011-11-30 87 views
0

如何配置Spring繼續加載它的bean,如果其init方法中定義的bean之一拋出異常。 lazy-init =「true」選項沒有幫助 - 它被忽略。在這個bean init()方法中,我嘗試打開與服務器的連接,這可能無法加載應用程序的彈簧上下文。春季3.0.6如何在Spring上下文初始化過程中忽略異常?

回答

3

例外的想法是要解決它們的原因,而不是忽略它們。

有沒有說過:我從來沒有見過這樣的事情:你必須由我們自己做。放入一個嘗試捕獲使用該異常的init方法並記錄它。

如果您有真正的AspectJ,那麼您也可以將它用於該任務。但是Spring-AOP不起作用。


(評論)我用側圖書館,在那裏我應該調用init方法,它建立了一些服務器,可能會出現問題的連接。

在這種情況下。如何提供導致問題的bean的工廠呢?工廠應該首先檢查連接(或者等待異常)(你正在做什麼是一個實現細節),如果每件事情都是正確的,就返回bean。如果連接失敗,那麼工廠將返回一個虛擬實現。

+1

我不同意你的看法。我使用side庫來調用init方法,它與某個服務器建立連接,在那裏可能會出現問題。由於這個原因,整個春天的環境將不會啓動。如果可能的話,我只想忽略這樣的bean創建。 – whatswrong

+0

@Eduard:這個用例不是你要求的:你要求某種方式來忽略所有bean的異常,而不是特定的bean。在這種情況下,特定的異常需要特定的處理,這是正常的編程。它與Spring Context無關。 – Ralph

+0

@Eduard:由於更精確的用例,請參閱我的擴展答案。 – Ralph

相關問題