2013-07-15 32 views
0

我有一個web應用程序,它使用幾個dao類作爲singleton spring beans。我的問題是,初始化所有這些bean需要很長時間,我寧願將時間分散到實際需要的bean的時間(有些甚至可能不會被使用,這取決於用戶的操作)。有沒有簡單的方法來做到這一點?如何在需要時初始化單例spring bean,而不是啓動?

回答

4

將它們設置爲懶惰地通過添加lazy-init="true"

例如初始化:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/> 
在bean定義XML

而在基於註解配置

@Lazy(true)

+0

雖然,這取決於多久你的ap應用程序需要啓動,所以在應用程序啓動時全部實例化它們更加明智。這將確保您儘早發現問題,而不是稍後。如果你的上下文需要_that_ long才能啓動,這可能表示你需要將應用程序分發出去 –

+0

謝謝。但是你的意思是什麼擴散我的應用程序? – theGuardian

+1

@ user1637987如果您的應用程序上下文花了很長時間來初始化它變得無法忍受,那很可能是您的應用程序負有許多責任。雖然它遠遠超出了這個問題的範圍,但可以考慮在面向服務的體系結構中開發新的代碼,以便您可以遠程調用執行不同任務的不同邏輯系統(即使它們坐在同一個物理盒子上) –

相關問題