在Spring2.0中增加了Singleton、Prototype和三个新的web作用域,分别为request、session和global session ;要使用request、session
和 global session
作用域的bean(即具有web作用域的bean),在开始设置bean定义之前,还要做少量的初始配置。请注意,假如你只想要“常规的”作用域,也就是singleton和prototype,就不需要这一额外的设置。
在目前的情况下,根据你的特定servlet环境,有多种方法来完成这一初始设置。如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml
中增加下述ContextListener
即可
<web-app>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
</web-app>
如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter
的实现,web.xml配置片段:
<web-app>
..
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
RequestContextListener和RequestContextFilter
两个类做的都是同样的工作:将HTTP request对象绑定到为该请求提供服务的Thread
。这使得具有request和session作用域的bean能够在后面的调用链中被访问到
Request作用域
<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 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 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作用域,并且不会引起任何错误。
摘自spring 2.0文档
分享到:
相关推荐
4. Bean的作用域:掌握singleton、prototype、request、session等不同作用域的概念及其应用场景。 三、AOP(面向切面编程) 1. AOP基础:理解AOP的基本概念,包括切面、通知、连接点、切入点表达式等。 2. Spring ...
第七,源码还涵盖了Spring的IoC容器,包括bean的生命周期、作用域、初始化和销毁方法,以及bean之间的依赖关系。这些都是Spring框架的基础,通过源码,我们能更好地理解这些概念。 最后,通过对每个章节源码的分析...
Bean生命周期管理、作用域(singleton、prototype等)、生命周期回调(如InitializingBean和DisposableBean接口)以及Bean后处理器等概念是理解和使用Spring Bean非常重要的部分。 五、消息机制 Spring提供了统一的...
1. 装配:Spring提供了XML配置文件、注解以及Java配置三种方式来声明对象及其依赖关系。 2. 容器:Spring容器负责创建对象、管理对象的生命周期,并处理对象间的依赖关系。 3. 依赖查找:通过容器查找并注入所需依赖...
Spring2.0中文帮助文档.chm可能涵盖了Spring的核心模块,如IoC容器、AOP原理、Bean的生命周期和作用域、数据源配置、DAO支持和Spring MVC的配置与使用。Spring的注解驱动开发、Spring Security和Spring Boot等内容也...
10. **Spring Boot**:虽然《Spring 2.0 技术手册》主要讨论的是Spring 2.0,但值得一提的是,Spring Boot是后来出现的一个快速开发框架,它基于Spring框架,简化了配置,并集成了许多常见的第三方库,使得开发...
- **新的bean作用域**:除了原有的`singleton`和`prototype`作用域外,新增了更多灵活的选项。 - **可扩展的XML编写**:允许开发者自定义XML标签,增强配置的灵活性。 - **面向切面编程(AOP)**: - **更加简单的...
Prototype 作用域是指每一次请求(将其注入到另一个 bean 中,或者以程序的方式调用容器的 getBean()方法)都会产生一个新的 bean 实例,相当于一个 new 的操作。对于 prototype 作用域的 bean,有一点非常重要,那...
#### 三、Spring WebFlow 配置的升级 SWF 1 和 SWF 2 在配置方式上也有所不同。 ##### 3.1 Spring WebFlow Bean 配置的变化 在 SWF 1 中,可以通过标准的 Spring Bean XML 配置或使用 `webflow-config-1.0` Schema ...
Struts2、Hibernate3.1和Spring2.0是Java Web开发中经典的三大框架,它们共同构建了一个轻量级的企业级应用架构。Struts2作为MVC(模型-视图-控制器)框架,主要负责处理用户界面交互和业务流程控制;Hibernate是一...
### Spring2.0参考手册(中文)知识点概览 #### 一、Spring框架简介 Spring框架是一个开源的应用程序框架,也是Java平台上一个轻量级的控制反转(IoC)和面向切面编程(AOP)容器。Spring 2.0版本在原有基础上增加...
Spring 2.0的Bean作用域包括singleton、prototype等,每种作用域都有其特定的生命周期管理策略,理解这些作用域对于合理设计系统架构至关重要。 #### 3.4 自定义Bean性质 Spring 2.0允许开发者自定义Bean的性质,...
每个框架都有其特定的作用域和配置方式,合理地结合这些框架能够极大地提升Web应用的开发效率和质量。开发者需要根据具体的应用场景灵活调整配置文件中的参数设置,确保各个框架之间的兼容性和稳定性。此外,在实际...
除了传统的singleton和prototype作用域,Spring 2.0引入了更多的作用域选项,如request、session等,为Web应用程序提供了更精细的控制粒度。 #### 1.3 扩展性的XML编写 Spring 2.0支持自定义命名空间和模式,允许...
- **New bean scopes**:引入了新的bean作用域,如`request`和`session`等,这些作用域特别适用于Web应用中的特定场景。 - **Extensible XML authoring**:通过提供更多的自定义选项,Spring 2.0使得XML配置更加灵活...
- **2.2.2 新的Bean作用域**:增加了更多的Bean作用域选项,例如`request`、`session`等,这些作用域使得Bean管理更加灵活。 - **2.2.3 可扩展的XML编写方式**:支持自定义命名空间,开发者可以根据需求创建自己的...
- **配置文件**:创建或编辑Spring的配置文件`applicationContext.xml`,其中定义了Bean的作用域、生命周期、依赖关系等。 - **集成Struts和Hibernate**:通过Spring的配置来整合Struts和Hibernate,实现两者之间的...