一、單例模式:在spring中其實是scope(作用範圍)引數的預設設定值
每個bean定義只生成乙個物件例項,每次getbean請求獲得的都是此例項
單例模式分為餓漢模式和懶漢模式;
關於單例的餓漢,懶漢請參考:
二、預設情況下為單例模式(餓漢),prototype多例項模式介紹
呼叫getbean時,就new乙個新例項
預設單例(餓漢):
prototype多例項模式介紹:
另有:request,session,globalsession
request:
spring容器建立乙個新的例項,利用loginaction,loginaction bean
bean定義為每乙個http請求。也就是說,loginaction bean是作用域
http請求的水平。你可以改變內部狀態的例項建立盡可能多的你
想要的,因為其他例項建立的同乙個loginaction不會看到這些bean定義
變化狀態;他們特定的單個請求。當請求處理完成,作用域的bean的請求就會被丟棄。
session:
spring容器建立乙個新的userpreferences bean使用的例項
userpreferences bean定義為乙個http會話的生命週期。換句話說,
userpreferences bean有效範圍在http會話級別。在請求範圍內
bean,你可以改變內部狀態的例項建立盡可能多的你想要的,
知道其他http會話例項也使用相同的例項建立
userpreferences bean定義看不到這些變化狀態,因為他們是特別的乙個
單獨的http會話。http會話最終丟棄時,作用域的bean特定的http會話也丟棄。
globalsession:
全球會話範圍類似於標準的http會話範圍(如上所述)
只適用於基於portlet的web應用程式的上下文中。portlet規範定義了這個概念
全球會話之間共享的所有portlet組成乙個portlet的web應用程式。
bean在全球會話範圍定義的作用域的生命週期(或約束)全球portlet會話。
如果你寫乙個標準的基於servlet的web應用程式定義乙個或多個bean
全球會話範圍,使用標準的http會話範圍,沒有錯誤。
Spring初始化Bean方法
一 總結 1 spring為bean初始化提供了兩種方式 2 實現initializingbean介面是直接呼叫afterpropertiesset方法,比通過反射呼叫init method指定的方法效率相對來說要高點。但是init method方式消除了對spring的依賴 3 如果呼叫after...
Spring中Bean的初始化流程
spring中經典的9種設計模式 mybatis執行流程 通常乙個 xml 對映檔案,都會寫乙個 dao 介面與之對應,請問,這個 dao 介面的工作原理是什麼?dao 介面裡的方法,引數不同時,方法能過載嗎?id是否可以相同 spring bean 的初始化主要實現在bean.factory包下的...
Spring 初始化bean之前,銷毀bean之前
spring 初始化bean之前,銷毀bean之後需要做的操作方式有三種 1.通過 postconstruct實現初始化之前進行的操作,predestroy實現銷毀bean之前做的操作 2.通過在xml中定義init method和destory method方法 3.通過bean實現initial...