淺談Spring學(xué)習(xí)之request,session與globalSession作用域
與web容器有關(guān)的作用域,首先要在Web容器里進(jìn)行一些配置。
<web-app>
...
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
...
</web-app>
Request作用域
考慮下面bean定義:
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
針對(duì)每次HTTP請(qǐng)求,Spring容器會(huì)根據(jù)loginAction bean定義創(chuàng)建一個(gè)全新的LoginAction bean實(shí)例, 且該loginAction bean實(shí)例僅在當(dāng)前HTTP request內(nèi)有效,因此可以根據(jù)需要放心的更改所建實(shí)例的內(nèi)部狀態(tài), 而其他請(qǐng)求中根據(jù)loginAction bean定義創(chuàng)建的實(shí)例,將不會(huì)看到這些特定于某個(gè)請(qǐng)求的狀態(tài)變化。 當(dāng)處理請(qǐng)求結(jié)束,request作用域的bean實(shí)例將被銷毀。
Session作用域
考慮下面bean定義:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
針對(duì)某個(gè)HTTP Session,Spring容器會(huì)根據(jù)userPreferences bean定義創(chuàng)建一個(gè)全新的userPreferences bean實(shí)例, 且該userPreferences bean僅在當(dāng)前HTTP Session內(nèi)有效。 與request作用域一樣,你可以根據(jù)需要放心的更改所創(chuàng)建實(shí)例的內(nèi)部狀態(tài),而別的HTTP Session中根據(jù)userPreferences創(chuàng)建的實(shí)例, 將不會(huì)看到這些特定于某個(gè)HTTP Session的狀態(tài)變化。 當(dāng)HTTP Session最終被廢棄的時(shí)候,在該HTTP Session作用域內(nèi)的bean也會(huì)被廢棄掉。
global session作用域
考慮下面bean定義:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域類似于標(biāo)準(zhǔn)的HTTP Session作用域,不過(guò)它僅僅在基于portlet的web應(yīng)用中才有意義。Portlet規(guī)范定義了全局Session的概念,它被所有構(gòu)成某個(gè)portlet web應(yīng)用的各種不同的portlet所共享。在global session作用域中定義的bean被限定于全局portlet Session的生命周期范圍內(nèi)。
請(qǐng)注意,假如你在編寫一個(gè)標(biāo)準(zhǔn)的基于Servlet的web應(yīng)用,并且定義了一個(gè)或多個(gè)具有g(shù)lobal session作用域的bean,系統(tǒng)會(huì)使用標(biāo)準(zhǔn)的HTTP Session作用域,并且不會(huì)引起任何錯(cuò)誤。
作用域依賴問(wèn)題
If you want to inject (for example) an HTTP request scoped bean into another bean of a longer-lived scope, you may choose to inject an AOP proxy in place of the scoped bean. That is, you need to inject a proxy object that exposes the same public interface as the scoped object but that can also retrieve the real target object from the relevant scope (such as an HTTP request) and delegate method calls onto the real object.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- an HTTP Session-scoped bean exposed as a proxy -->
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<!-- instructs the container to proxy the surrounding bean -->
<aop:scoped-proxy/>
</bean>
<!-- a singleton-scoped bean injected with a proxy to the above bean -->
<bean id="userService" class="com.foo.SimpleUserService">
<!-- a reference to the proxied userPreferences bean -->
<property name="userPreferences" ref="userPreferences"/>
</bean>
</beans>
總結(jié)
以上就是本文關(guān)于Spring學(xué)習(xí)之request,session與globalSession作用域的全部?jī)?nèi)容,希望對(duì)大家有所幫助。更多內(nèi)容請(qǐng)參考:Spring spel表達(dá)式使用方法示例、Java之Spring注解配置bean實(shí)例代碼解析、java中javaBean與Bean的深入理解以及本站其他欄目,感謝大家對(duì)本站的支持!
- Spring IOC原理補(bǔ)充說(shuō)明(循環(huán)依賴、Bean作用域等)
- SPRING FRAMEWORK BEAN作用域和生命周期原理解析
- 簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別
- Spring實(shí)戰(zhàn)之協(xié)調(diào)作用域不同步的Bean操作示例
- Spring實(shí)戰(zhàn)之Bean的作用域request用法分析
- Spring實(shí)戰(zhàn)之Bean的作用域singleton和prototype用法分析
- 深入了解Spring中Bean的作用域和生命周期
- 淺談Spring中Bean的作用域、生命周期
- spring ioc的簡(jiǎn)單實(shí)例及bean的作用域?qū)傩越馕?/a>
- 淺談spring中scope作用域
- JSP 中Spring Bean 的作用域詳解
- 詳解Spring中Bean的生命周期和作用域及實(shí)現(xiàn)方式
- 最全總結(jié)SpringBean的作用域管理
相關(guān)文章
Spring Data分頁(yè)與排序的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Spring Data分頁(yè)與排序的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
關(guān)于@ResponseBody 默認(rèn)輸出的誤區(qū)的解答
這篇文章主要介紹了關(guān)于@ResponseBody 默認(rèn)輸出的誤區(qū)的解答,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Java實(shí)現(xiàn)從字符串中找出數(shù)字字符串的方法小結(jié)
這篇文章主要介紹了Java實(shí)現(xiàn)從字符串中找出數(shù)字字符串的方法,結(jié)合實(shí)例形式總結(jié)分析了Java查找數(shù)字字符串的常用技巧,需要的朋友可以參考下2016-03-03
java IO流 之 輸出流 OutputString()的使用
這篇文章主要介紹了java IO流 之 輸出流 OutputString()的使用的相關(guān)資料,需要的朋友可以參考下2016-12-12
淺談HTTP使用BASIC認(rèn)證的原理及實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇淺談HTTP使用BASIC認(rèn)證的原理及實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
Java 遞歸遍歷實(shí)現(xiàn)linux tree命令方式
這篇文章主要介紹了Java 遞歸遍歷實(shí)現(xiàn)linux tree命令方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Springboot動(dòng)態(tài)配置AOP切點(diǎn)詳解
這篇文章主要介紹了Springboot動(dòng)態(tài)配置AOP切點(diǎn)詳解,Springboot 可以定義注解切點(diǎn)去攔截注解修飾的類方法以及execution(xxxx)切點(diǎn)去攔截具體的類方法,默認(rèn)情況下我們都會(huì)使用注解@PointCut去定義切點(diǎn),然后定義切面攔截切點(diǎn),需要的朋友可以參考下2023-09-09
java實(shí)現(xiàn)讀取帶合并單元格的Excel
這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)讀取帶合并單元格的Excel,文中的示例代碼講解詳細(xì), 感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12

