Spring 中 Bean 的作用域有哪些?
【聚搜云】是上海聚搜信息技術(shù)有限公司旗下品牌,坐落于魔都上海,服務(wù)于全球、2019年成為阿里云代理商生態(tài)合作伙伴。與阿里云代理商、騰訊云、華為云、西部數(shù)碼、美橙互聯(lián)、AWS亞馬遜云國際站渠道商、聚搜云長期戰(zhàn)略合作的計(jì)劃!華為云國際站代理商專業(yè)的云服務(wù)商!
【Spring 中 Bean 的作用域有哪些?】[本文由華為云渠道商[聚搜云] [ www.4526.cn]撰寫。]
Spring 是現(xiàn)在 Java 開發(fā)中最流行的開源框架之一,用來幫助 Java 程序員們構(gòu)建優(yōu)雅的企業(yè)級應(yīng)用程序,提供了很多工具和庫,其中 Bean 就是 Spring Framework 的一個(gè)核心功能。
Bean 可以理解為 Java 代碼中的對象,Spring 容器負(fù)責(zé)創(chuàng)建 Bean 實(shí)例、裝配 Bean 依賴關(guān)系以及管理 Bean 的整個(gè)生命周期。因此,Bean 的作用域也就成為了我們需要關(guān)注的重點(diǎn)。
1. singleton
首先是默認(rèn)的作用域:singleton,也稱作“單例”。這意味著 Spring 容器只會創(chuàng)建一個(gè) Bean 實(shí)例,而所有的請求都將返回這個(gè)實(shí)例。因?yàn)樗锌刂品崔D(zhuǎn)的 Bean 都存在于同一上下文中,這種模式十分適用于處理共享資源。

2. prototype
其次是“原型”作用域,指 容器會為每個(gè) Bean 請求創(chuàng)建一個(gè)新實(shí)例。這意味著每次該 Bean 被注入或通過 Spring 應(yīng)用程序上下文獲取時(shí),都會創(chuàng)建一個(gè)新實(shí)例。prototype 作用域適用于那些需要“狀態(tài)”的 Bean,緩存及 Bean 池實(shí)現(xiàn)都是很好的例子。
3. request
request 作用域是指每次 HTTP 請求都會創(chuàng)建一個(gè)新的 Bean 實(shí)例,即每個(gè)請求都有自己的 Bean 實(shí)例。request 作用域在 web 應(yīng)用程序中非常常用,如表單提交,每個(gè)表單提交都需要一個(gè)全新的 bean。
4. session
session 作用域與 request 作用域非常相似,不過它是在一個(gè) HTTP Session 內(nèi)有效。同樣的 Bean 的實(shí)例將被應(yīng)用在該會話內(nèi)的多個(gè)請求中。如果在不同會話之間獨(dú)立保持狀態(tài),可以使用 session 作用域。
5. global/session/application
最后,我們也可以通過實(shí)現(xiàn)特定接口并配置相應(yīng)的屬性來定義自己的作用域,比如全局作用域 goble-session/application 等。這種方式通常不太常用,但是顯然它可以在一定程度上解決業(yè)務(wù)需求。
總之,Spring Bean 的作用域非常重要,根據(jù)應(yīng)用的具體需求來選擇合適的作用域,會使應(yīng)用程序更加靈活和穩(wěn)定。

kf@jusoucn.com
4008-020-360


4008-020-360
