推薦答案
在Spring中,Bean的作用域有五種,分別是:
singleton:單例模式,一個(gè)Spring容器只有一個(gè)Bean實(shí)例;
prototype:原型模式,每次請(qǐng)求該Bean時(shí),都會(huì)創(chuàng)建一個(gè)新的實(shí)例;
request:請(qǐng)求作用域,每個(gè)HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的實(shí)例,該實(shí)例僅在該次請(qǐng)求中有效,多次請(qǐng)求則會(huì)創(chuàng)建多個(gè)實(shí)例;
session:會(huì)話(huà)作用域,每個(gè)HTTP會(huì)話(huà)都會(huì)創(chuàng)建一個(gè)新的實(shí)例,該實(shí)例在整個(gè)會(huì)話(huà)期間有效;
global-session:全局會(huì)話(huà)作用域,適用于Portlet環(huán)境下,表示全局會(huì)話(huà),比如一個(gè)用戶(hù)使用多個(gè)PC端口甚至不同的瀏覽器來(lái)訪(fǎng)問(wèn)同一應(yīng)用,該實(shí)例將在所有端口和瀏覽器中共享。
Bean作用域的范圍取決于其所在的上下文,例如對(duì)于Web應(yīng)用,不同的Bean作用域可用于將Bean的生命周期綁定到HTTP請(qǐng)求、HTTP會(huì)話(huà)或全局會(huì)話(huà)的不同階段。因此,通過(guò)使用不同作用域的Bean,我們可以控制Bean的生命周期,滿(mǎn)足各種應(yīng)用場(chǎng)景的需求。
其他答案
-
bean的作用域共分為四種,即單例、原型、會(huì)話(huà)和請(qǐng)求作用域。首先是單例作用域。顧名思義,這種情況下的bean只會(huì)被創(chuàng)建一次,并且會(huì)一直存在于整個(gè)應(yīng)用程序的生命周期中。此時(shí),即使在多個(gè)線(xiàn)程中都需要使用該bean,也不會(huì)導(dǎo)致線(xiàn)程安全問(wèn)題。因此,單例bean的生命周期對(duì)于整個(gè)應(yīng)用程序來(lái)說(shuō)非常重要。其次是原型作用域。與單例相對(duì)應(yīng)的是原型,這種情況下的bean在需要時(shí)會(huì)被創(chuàng)建,而不是程序啟動(dòng)時(shí)就創(chuàng)建。并且每次注入時(shí)都會(huì)創(chuàng)建一個(gè)新的實(shí)例。這種作用域通常用于需要短暫生命周期的bean,例如HTTP請(qǐng)求或用戶(hù)會(huì)話(huà)。第三種是會(huì)話(huà)作用域。這種作用域下的bean生命周期與用戶(hù)會(huì)話(huà)一致,即每個(gè)用戶(hù)都有一個(gè)獨(dú)立的bean實(shí)例。因此,在不同的用戶(hù)會(huì)話(huà)之間,bean的狀態(tài)是獨(dú)立的。通常情況下,會(huì)話(huà)作用域的bean用于保存用戶(hù)特定的數(shù)據(jù)。最后,是請(qǐng)求作用域。在這種作用域下,bean的生命周期與HTTP請(qǐng)求相同,即每個(gè)請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的實(shí)例,并且只存在于請(qǐng)求的處理期間。因此,請(qǐng)求作用域通常用于需要處理短暫請(qǐng)求的bean。
-
Spring框架定義了五種作用域:singleton、prototype、request、session和global session。其中,singleton作用域是默認(rèn)的作用范圍,它表示一個(gè)Bean在整個(gè)應(yīng)用程序中只有一個(gè)實(shí)例。prototype作用域表示每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean實(shí)例。request作用域表示一個(gè)在同一次Http請(qǐng)求中的所有實(shí)例共享的Bean實(shí)例。session作用域表示一個(gè)在同一個(gè)Http Session中的所有實(shí)例共享的Bean實(shí)例。global session作用域是用于使用portlet上下文的應(yīng)用程序的Bean實(shí)例,它表示一個(gè)在所有portlet上下文中的所有實(shí)例共享的Bean實(shí)例。對(duì)于大多數(shù)應(yīng)用程序來(lái)說(shuō),singleton和prototype是最常用的作用范圍。singleton適用于保持Bean狀態(tài)的情況,例如數(shù)據(jù)庫(kù)連接池或應(yīng)用程序配置。prototype適用于創(chuàng)建狀態(tài)非常容易改變的Bean實(shí)例,例如Web控制器或視圖解析器。對(duì)于Web應(yīng)用程序,request和session作用域也是非常重要的。request作用域Bean可以用于處理一些與請(qǐng)求相關(guān)的邏輯,例如處理表單提交或用戶(hù)登錄。session作用域Bean可以用于跨多個(gè)Http請(qǐng)求存儲(chǔ)用戶(hù)特定的數(shù)據(jù),例如購(gòu)物車(chē)或用戶(hù)偏好設(shè)置。最后,global session作用域用于基于portlet容器的應(yīng)用程序,例如使用JSR-168標(biāo)準(zhǔn)的portlet應(yīng)用程序。在這種情況下,global session廣泛用于在所有使用相同portlet上下文的portlet**享數(shù)據(jù)。
熱問(wèn)標(biāo)簽 更多>>
人氣閱讀
熱問(wèn)TOP榜
大家都在問(wèn) 更多>>
java靜態(tài)代碼塊和構(gòu)造方法執(zhí)行順序怎么操作
java文件分片上傳實(shí)現(xiàn)方法怎么操作
java對(duì)稱(chēng)加密返回參數(shù)給客戶(hù)端怎么操作
java合并兩個(gè)數(shù)組并升序排列怎么...
java合并兩個(gè)數(shù)組并排序怎么操作
java多行字符串輸入怎么操作