Spring註解中 Scope 的使用解說

2021-08-15 01:53:26 字數 1407 閱讀 9610

案例**

system.out.println(thread.currentthread().getname()+"getparamvalve--now param is:" + bean.getparam());

}執行緒12:setparamvalve--now param is:null

執行緒3:setparamvalve--now param is:null

當設定為prototype時:每次連線請求,都會生成乙個bean例項,也會導致乙個問題,當請求數越多,效能會降低,因為建立的例項,導致gc頻繁,gc時長增加。

設定為單例模式:保證了全域性都會有乙個例項,對效能有所提高,但是如果例項中有非靜態變數時,會導致執行緒安全問題,共享資源的競爭。

預設是單例模式,即scope="singleton"。另外scope還有prototype、request、session、global session作用域。scope="prototype"多例

@scope預設是單例模式(singleton)

如果需要設定的話@scope("prototype")

1.singleton單例模式,

全域性有且僅有乙個例項

2.prototype原型模式,

每次獲取bean的時候會有乙個新的例項

3.request

request表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http request內有效,配置例項:

request、session、global session使用的時候首先要在初始化web的web.xml中做如下配置:

如果你使用的是servlet 2.4及以上的web容器,那麼你僅需要在web應用的xml宣告檔案web.xml中增加下述contextlistener即可: 

4.session

session作用域表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http session內有效

5.global session

global session作用域類似於標準的http session作用域,不過它僅僅在基於portlet的web應用中才有意義。portlet規範定義了全域性session的概念,它被所有構成某個 portlet web應用的各種不同的portlet所共享。在global session作用域中定義的bean被限定於全域性portlet session的生命週期範圍內。如果你在web中使用global session作用域來標識bean,那麼web會自動當成session型別來使用。

但是一般常見的話一般會使用上面1和2兩種

Spring中的 scope註解

預設是單例模式,即scope singleton 另外scope還有prototype request session global session作用域。scope prototype 多例 scope預設是單例模式 singleton 如果需要設定的話 scope prototype 1.sin...

Spring中的 scope註解

預設是單例模式,即scope singleton 另外scope還有prototype request session global session作用域。scope prototype 多例 scope預設是單例模式 singleton 如果需要設定的話 scope prototype 1.sin...

Spring中的 scope註解

scope,也稱作用域,在 spring ioc 容器是指其建立的 bean 物件相對於其他 bean 物件的請求可見範圍。在 spring ioc 容器中具有以下幾種作用域 基本作用域 singleton prototype web 作用域 reqeust session globalsessio...