Spring3之Bean的作用域

2021-09-01 10:20:19 字數 1618 閱讀 9658

[size=medium]

作用域即「scope」,在物件導向程式設計中一般指物件或變數之間的可見範圍。而在spring容器中是指其建立的bean物件相對於其他bean物件的請求可見範圍。

spring提供「singleton」和「prototype」兩種基本作用域,另外提供「request」、「session」、「global session」三種web作用域;spring還允許使用者定製自己的作用域。

[b][color=blue]基本的作用域[/color][/b]

[b]singleton[/b]:此作用域的bean只會在每個spring ioc容器中存在乙個例項,而且其完整生命週期完全由spring容器管理。對於所有獲取該bean的操作spring容器將只返回同乙個bean,[color=red]spring容器中如果沒指定作用域預設就是「singleton」[/color][/size]

[size=medium]spring管理單例物件在spring容器中儲存如圖所示,spring不僅會快取單例物件,bean定義也是會快取的,對於惰性初始化的物件是在首次使用時根據bean定義建立並存放於單例快取池。[/size]

[img]

[size=medium]

[b]prototype[/b]:即原型,指每次向spring容器請求獲取bean都返回乙個全新的bean,相對於「singleton」來說就是不快取bean,每次都是乙個根據bean定義建立的全新bean

[/size]

[size=medium]spring管理原型物件在spring容器中儲存如圖所示,spring不會快取原型物件,而是根據bean定義每次請求返回乙個全新的bean:[/size]

[img]

[size=medium][b][color=blue]web應用中的作用域[/color][/b]

在web應用中,我們可能需要將資料儲存到request、session、global session。因此spring提供了三種web作用域:request、session、globalsession

● [b]request作用域[/b]:[color=red]表示每個請求需要容器建立乙個全新bean[/color]。比如提交表單的資料必須是對每次請求新建乙個bean來保持這些表單資料,請求結束釋放這些資料。

● [b]session作用域[/b]:[color=red]表示每個會話需要容器建立乙個全新bean[/color]。比如對於每個使用者一般會有乙個會話,該使用者的使用者資訊需要儲存到會話中,此時可以將該bean配置為web作用域。

● [b]globalsession[/b]:類似於session作用域,只是其用於portlet環境的web應用。如果在非portlet環境將視為session作用域。

配置方式和基本的作用域相同,只是必須要有web環境支援,並配置相應的容器***或***從而能應用這些作用域。

[b][color=blue]自定義作用域[/color][/b]

在日常程式開發中,幾乎用不到自定義作用域,除非又必要才進行自定義作用域。如果要實現自定義作用域,那麼必須實現spring的scope介面。具體用法在這篇部落格裡面有詳細介紹:

[url]

Spring3之Bean的自動裝配

size medium 自動裝配就是指由spring來自動地注入依賴物件,無需人工參與。目前spring3.0支援 no byname bytype constructor 四種自動裝配,預設是 no 指不支援自動裝配的,其中 color red spring3.0已不推薦使用之前版本的 autod...

Spring 3 自動裝配bean

class com.csu.autowire.address p city changsha p street shaoshan id car class com.csu.factory.car p name benz p price 632275 p speed 290 p address ref...

spring之bean的作用域

知識追尋者 inheriting the spirit of open source,spreading technology knowledge spring定義了多種bean的作用域,常用的4種如下 單例 singleton 在整個應用中,只建立bean的乙個例項。原型 prototype 每次...