Spring.NET學習筆記5——容器中對象的作用域(基礎篇)

容器中對象的部署分爲兩種方式:singleton和非singleton(java裏叫prototype)。這裏的singleton指的是“單例模式”,就是說當一個對象被定義爲singleton時,容器中就只會有一個共享的實例,任何時候通過id或別名請求該對象都會返回這個共享實例的引用(也就是說這個對象只會被創建一次)。當使用非singleton,或者說原型模式佈署時,每次請求對象都會創建新的實例。在某些場合,如果需要爲每個用戶返回單獨的用戶對象或其它對象,非singlton佈署模式就比較理想。Spring.NET默認爲singleton模式。每次調用GetObject方法時得到的都是同樣的實例;當singleton="false"時,每次調用GetObject方法時得到的則是不同的實例。

 

 

 

 

 

  

 

 

 

這說明singleton=false後,每次調用GetObject方法獲取的對象是不同實例的,當脫離調用方法(CreateWithOutSingleton)的作用域後,該實例會被Spring.NET容器銷燬。

   

   lazy-init屬性是指:當Spring.NET容器初始化的時候標註該屬性的對象將被實例化,反之則是調用GetObject方法的時候才被實例化。

 

 

 

 

 

  

 

PersonDao類未設置lazy-init屬性,則當Spring.NET初始化時被實例;PersonServer類設置lazy-init="true",則當調用GetObject方法時才被實例。

一般情況下可以有選擇的設置lazy-init屬性,正如雙刃劍一樣,設置爲lazy-init=true的時候應用程序啓動時會快一點,但是在啓動的時候就不能夠幫我們檢測錯誤,但當調用的時候一旦發生錯誤,後果是不堪設想的。

  更多資料請查看Spring.NET中文手冊。

 

  代碼下載 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章