spring註解之 Scope註解

2021-09-10 08:20:22 字數 1673 閱讀 8292

1,@scope註解是什麼

@scope註解是springioc容器中的乙個作用域,在 spring ioc 容器中具有以下幾種作用域:基本作用域singleton(單例)prototype(多例),web 作用域(reqeust、session、globalsession),自定義作用域

a.singleton單例模式 -- 全域性有且僅有乙個例項

b.prototype原型模式 -- 每次獲取bean的時候會有乙個新的例項

c.request -- request表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http request內有效

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

e.globalsession -- global session作用域類似於標準的http session作用域,不過它僅僅在基於portlet的web應用中才有意義

2,@scope註解怎麼使用

直接在bean物件方法上增加@scope註解就可以如下:

/**

* 定義乙個bean物件

* @return

*/@scope

@bean(value="user0",name="user0",initmethod="inituser",destroymethod="destroyuser")

public user getuser()

@scope註解預設的singleton例項,singleton例項的意思不管你使用多少次在springioc容器中只會存在乙個例項,演示如下只列印了一次建立例項:

system.out.println("例項1 === "+bean2);

system.out.println("例項2 === "+bean3);

建立user例項

例項1 === user [username=張三, age=26]

例項2 === user [username=張三, age=26]

接下來把例項型別改為prototype如下:

@scope(value="prototype")
執行結果如下:

建立user例項

例項1 === user [username=張三, age=26]

建立user例項

例項2 === user [username=張三, age=26]

3,@scope註解的使用場景

幾乎90%以上的業務使用singleton單例項就可以,所以spring預設的型別也是singleton,singleton雖然保證了全域性是乙個例項,對效能有所提高,但是如果例項中有非靜態變數時,會導致執行緒安全問題,共享資源的競爭

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

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...