Spring之5種Bean Scope
序言

Scope是定義spring如何創建bean的實例的。
spring容器最初提供了兩種bean的scope類型:singleton和prototype;但發布2.0以后,又引入了另外三種scope類型:request、session和global session,這三種只能在web 應用中才可以使用。
在創建bean的時候可以帶上scope屬性,scope有下面幾種類型:
概念理解
Spring官方文檔表示有如下5種類型:
singleton:
這是Spring默認的scope,表示Spring容器只創建唯一一個bean的實例,所有該對象的引用都共享這個實例,并且Spring在創建第一次后,會在Spring的IoC容器中緩存起來,之后不再創建,就是設計模式中的單例模式的形式。
并且對該bean的所有后續請求和引用都將返回該緩存中的對象實例。一般情況下,無狀態的bean使用該scope。
prototype:
代表線程每次調用或請求這個bean都會創建一個新的實例。一般情況下,有狀態的bean使用該scope。
request:
每次http請求將會有各自的bean實例,類似于prototype。
也就是說每個request作用域內的請求只創建一個實例。
session:
在一個http session中,一個bean定義對應一個bean實例。也就是說每個session作用域內的請求只創建一個實例。
global session:
在一個全局的http session中,一個bean定義對應一個bean實例。
但是,這個scope只在porlet的web應用程序中才有意義,它映射到porlet的global范圍的session,如果普通的web應用使用了這個scope,容器會把它作為普通的session作用域的scope創建。
注:?再次說明spring的默認scope(bean作用域)是singleton
使用方式
創建bean的時候如何指定其作用域呢?
XML方式:
注解方式:
參考書籍:
Spring官網:https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html
本文轉載自公眾號【java學習之道】。
Spring
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。