`
huangkun1123
  • 浏览: 23781 次
  • 性别: Icon_minigender_1
  • 来自: 程序帝国
社区版块
存档分类
最新评论

spring中bean的作用范围

阅读更多

spring中Bean的作用域:
在spring2.0之前bean只有两种作用域即:singleton(单例)和non-singleton(也称prototype),spring 2.0以后,增加了session,request,global session三种专门用于WEB应用程序上下文的Bean.因此,默认情况下spring 2.0现在有五种类型的Bean.

1.singleton作用域
当一个bean的作用域设置为singleton,那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。
配置实例为:<bean id="" class="" scope="singleton"/>或者<bean id="" class="" singleton="true"/>

2.prototype作用域
prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当于一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。例如:<bean id="" class="" scope="prototype"/>或<bean id="" class="" singleton="false"/>

3.request
request表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效。配置实例:
request,session,global session使用的时候,首先要在初始化web的web.xml中做如下配置:
如果是servlet2.4及以上的web容器,那么仅需要在web.xml文件中增加contextListener即可:
<web-app>
 ...
 <listener>
    <listener-class>
    org.springframework.web.context.request.RequestContextListener</listener-class>
 </listener>
 ...
 </web-app>
如果是servlet2.4以前的web容器,则需要用一个javax.servlet.Filter的实现:
<web-app>
 ...
  <filter>
     <filter-name>requestContextFilter</filter-name>
     <filter-class>org.springframework.web.filter.RequestContextFilter</filter-     class>
     <filter-mapping>
        <filter-name>requestContextFilter</filter-name>
 <url-pattern>/*</url-pattern>
     </filter-mapping>
  </filter>
 ...
</web-app>
接着可以配置bean的作用域:
<bean id="" class="" scope="request"/>

4.session
session作用域表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效。

5.global session
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么,web会自动当成session类型来使用。

分享到:
评论

相关推荐

    spring的bean作用域

    在Spring框架中,Bean的作用域是管理Bean实例创建和存活范围的重要概念。Bean的作用域决定了在特定上下文中,Spring容器如何管理和提供Bean的实例。在Spring中,有五种主要的Bean作用域: 1. **Singleton作用域**:...

    第八章 Spring4 bean作用范围

    NULL 博文链接:https://1151461406.iteye.com/blog/2390230

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    spring中bean的范围(xml/annotation)

    在Spring框架中,Bean的范围(Scope)是控制对象实例化和管理的重要概念。它定义了Bean在应用程序中创建和共享的方式。...正确理解和使用Bean范围能够帮助我们构建更加高效和健壮的Spring应用程序。

    详解Spring中bean的scope以后使用

    **Global Session**作用域适用于门户应用中的Bean,它在全局范围内保持一致的状态,即使在不同端口之间也能保持会话的一致性。 启用Global Session作用域的方式与Request和Session作用域类似: ```xml ...

    普元eos-springbean开发

    通过上述内容的学习,我们不仅了解了SpringBean在普元EOS平台中的重要作用,还掌握了其开发和配置的方法。此外,通过两个具体的案例——HelloWorld案例和报销单维护案例,我们更加深入地理解了SpringBean的实际应用...

    Spring实例化Bean顺序

    在Spring框架中,Bean的实例化顺序是一个关键概念,它涉及到如何管理和协调多个Bean的创建与依赖关系。这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 ...

    JSP 中Spring Bean 的作用域详解.docx

    Bean的作用域定义了在一个特定的范围内,Spring如何管理和实例化Bean。下面将详细介绍JSP中Spring Bean的五种作用域。 1. **Singleton作用域**: Singleton是Spring中最常见的一种作用域,它表示在整个Spring IoC...

    spring管理bean应用实例代码

    - `singleton`:默认作用域,Spring容器中只有一个Bean实例。 - `prototype`:每次请求都会创建一个新的Bean实例。 - `request`、`session`、`globalSession`:这些是在Web应用中使用的,分别对应HTTP请求、会话...

    Spring项目bean基础配置代码

    本文将深入探讨Spring项目中的Bean基础配置、别名配置以及作用范围配置。 首先,我们来理解Bean的基础配置。在Spring中,一个Bean的定义通常包含以下几个关键属性: 1. `id`:这是Bean的唯一标识符,用于在配置...

    spring 中特殊bean用法

    在Spring框架中,Bean是核心概念,它代表了应用程序中的对象,这些对象由Spring容器管理其生命周期和依赖关系。特殊Bean用法主要涉及Spring提供的多种高级特性,包括但不限于工厂方法、 prototype scope、AOP代理、...

    spring3零配置注解实现Bean定义

    标题《spring3零配置注解实现Bean定义》中蕴含的知识点主要包括Spring框架中的Bean定义配置方法的演进,特别是从Spring 2.5到Spring 3版本的过渡过程中,对于注解方式实现Bean定义的支持如何被引入和优化。...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    除了基本的`@Component`家族,Spring还提供了一些高级注解,如`@Scope`用于定义Bean的作用域,`@Lazy`用于延迟初始化Bean,`@Qualifier`用于在多个相同类型的Bean中指定特定的一个。 ### **总结** Spring的自动...

    JSP 中Spring Bean 的作用域详解

    在JSP(Java Server Pages)开发中,经常需要与Spring框架进行交互,而Spring框架中的Bean作用域定义了该Bean的生命周期以及在应用程序中的共享范围。Spring Bean的作用域有以下几种: 1. Singleton(单例) 单例是...

    使用 Spring LDAP 读取数据并映射到 Java Bean 中

    这篇博客文章“使用 Spring LDAP 读取数据并映射到 Java Bean 中”主要探讨了如何通过Spring LDAP来查询LDAP目录信息,并将查询结果转换为Java对象,以便在应用程序中进一步处理。 首先,`pom.xml`文件是Maven项目...

    SSH笔记-bean的作用域

    在Spring框架中,Bean的作用域是管理对象生命周期和作用范围的关键概念。Bean的定义通常包含在XML配置文件中,通过`&lt;bean&gt;`标签进行配置。当我们谈论"SSH笔记-bean的作用域"时,这里SSH指的是Spring、Struts和...

    Spring Bean 的生命周期.docx

    BeanPostProcessor接口的实现类通常作为Spring容器的附加组件注册,因此其影响范围是全局的,可以对所有Bean进行处理。这两个后处理器接口提供了灵活的扩展点,允许开发者在Bean生命周期的关键点进行自定义操作。 ...

    Java开发学习(三)----Bean基础配置及其作用范围.doc

    - **其他作用范围**:除了`singleton`和`prototype`,Spring还提供了`request`(Web应用中每个HTTP请求创建一个bean)、`session`(Web应用中每个HTTP session创建一个bean)、`globalSession`(portlet应用中全局...

    spring-spring容器中bean知识点总结

    Spring容器中Bean的作用域是指Bean实例的生命周期和作用范围。Spring容器提供了五种作用域:singleton、prototype、request、session和global session。 1. Singleton作用域 Singleton作用域是指整个Spring IoC...

Global site tag (gtag.js) - Google Analytics