浅谈Spring学习之request,session与globalSession作用域

发布时间 - 2026-01-11 03:22:55    点击率:

与web容器有关的作用域,首先要在Web容器里进行一些配置。

<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"/>

针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。

Session作用域

考虑下面bean定义:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>

针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例, 且该userPreferences bean仅在当前HTTP Session内有效。 与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。

global session作用域

考虑下面bean定义:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>

global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。

请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误。

作用域依赖问题

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>

总结

以上就是本文关于Spring学习之request,session与globalSession作用域的全部内容,希望对大家有所帮助。更多内容请参考:Spring spel表达式使用方法示例、Java之Spring注解配置bean实例代码解析、java中javaBean与Bean的深入理解以及本站其他栏目,感谢大家对本站的支持!


# request  # session  # request和session  # 作用域  # Spring IOC原理补充说明(循环依赖、Bean作用域等)  # SPRING FRAMEWORK BEAN作用域和生命周期原理解析  # 简单了解spring bean作用域属性singleton和prototype的区别  # Spring实战之协调作用域不同步的Bean操作示例  # Spring实战之Bean的作用域request用法分析  # Spring实战之Bean的作用域singleton和prototype用法分析  # 深入了解Spring中Bean的作用域和生命周期  # 浅谈Spring中Bean的作用域、生命周期  # spring ioc的简单实例及bean的作用域属性解析  # 浅谈spring中scope作用域  # JSP 中Spring Bean 的作用域详解  # 详解Spring中Bean的生命周期和作用域及实现方式  # 最全总结SpringBean的作用域管理  # 创建一个  # 内有效  # 也会  # 你可以  # 多个  # 你在  # 要在  # 将被  # 请注意  # 有意义  # 可以根据  # 类似于  # 请参考  # 感谢大家  # 所建  # 中才  # 容器里 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 简单实现jsp分页  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Bootstrap CSS布局之列表  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  C#如何调用原生C++ COM对象详解  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何正确下载安装西数主机建站助手?  如何在建站主机中优化服务器配置?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何快速搭建高效WAP手机网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  PHP 500报错的快速解决方法  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何在阿里云虚拟主机上快速搭建个人网站?  javascript日期怎么处理_如何格式化输出  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  JavaScript如何操作视频_媒体API怎么控制播放  大学网站设计制作软件有哪些,如何将网站制作成自己app?  文字头像制作网站推荐软件,醒图能自动配文字吗?  历史网站制作软件,华为如何找回被删除的网站?  Laravel如何使用Sanctum进行API认证?(SPA实战)  进行网站优化必须要坚持的四大原则  在centOS 7安装mysql 5.7的详细教程  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel如何使用withoutEvents方法临时禁用模型事件  网站制作报价单模板图片,小松挖机官方网站报价?  如何在万网ECS上快速搭建专属网站?  JavaScript如何实现路由_前端路由原理是什么  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何为不同团队 ID 动态生成多个非值班状态按钮  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何处理和验证JSON类型的数据库字段  EditPlus中的正则表达式 实战(4)  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  jQuery validate插件功能与用法详解  如何快速生成ASP一键建站模板并优化安全性?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明