`

spring IOC之Bean的scope属性值

 
阅读更多
spring IOC之Bean的scope属性值:prototype与singleton

http://gjdrift.diandian.com/post/2012-10-03/40040171461

如果在<bean>中指定Bean的作用范围为scope="prototype",将Bean返回给调用者,调用者负责Bean

后续生命的管理,spring不再管理这些Bean的生命周期.如果作用范围设置为scope="singleton",则将

Bean放入Spring IOC容器的缓存池中,并将Bean引用返回给调用者,spring继续对这些Bean进行后续

的生命管理. 默认属性是singleton



1.2.  Bean以两种形态存在:singletons形式和prototypes形式。当bean以singletons形态存在时,BeanFactory只管理一个共享的实例。所有对这个特定bean的实例请求,都导致返回这个唯一bean实例的引用。
当bean以prototype形态存在时,每次对这个bean的实例请求都会导致一个新的实例的创建。当用户需要不受其他用户对象影响的对象或有类似的需求时,这是一个较理想的解决办法。
Bean默认是以singleton形态存在的,除非你另外显式加以指定。留神,当把bean的设置改为prototype模式时,每次对这个bean的实例请求都会导致一个新的bean实例被创建,而这可能并不是你所期望的。所以,只应该在确实需要的情况下把bean设置为prototype模式

3、request

request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:

request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:

如果你使用的是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>




如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现: 





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




接着既可以配置bean的作用域了:




<bean id="role" class="spring.chapter2.maryGame.Role"scope="request"/>




4、session

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

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置: 





<bean id="role" class="spring.chapter2.maryGame.Role"scope="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类型来使用。

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置: 





<bean id="role" class="spring.chapter2.maryGame.Role"scope="global session"/>
分享到:
评论

相关推荐

    07-IoC配置-scope属性

    scope属性 名称: scope类型:属性 归属: bean标签 作用:定义bean的作用范围 格式: &lt;bean scope=“singleton"&gt;&lt;/bean&gt; 取值: singleton:设定创建出的对象保存在spring容器中,是一个单例的对象(bean默认是单例...

    撸一撸Spring Framework-IoC-BeanDefinition(csdn)————程序.pdf

    在Spring Framework中,IoC(Inversion of Control,控制反转)是核心概念之一,它使得应用程序的组件不再直接创建依赖对象,而是由Spring容器来管理和维护。BeanDefinition就是实现这一概念的关键元素,它包含了...

    Spring IOC Annotation 注入 学习实例

    6. `@Value`:这个注解用于注入基本类型的值或从属性文件中读取的值。 7. `@Scope`:定义Bean的作用范围,如单例(`prototype`)或多例(`singleton`)。 8. `@PostConstruct` 和 `@PreDestroy`:这两个注解分别...

    Spring通过注解实现IOC

    总结来说,Spring通过注解实现的IOC,主要包括了Bean的声明、依赖的自动装配、作用域的定义、生命周期方法的控制以及属性值的注入等功能。通过这些注解,开发者可以轻松地管理和控制应用程序中的对象,实现松散耦合...

    Spring注解IOC所用的jar包

    4. `@Value`:用于注入基本类型的值或属性文件中的值。它可以注入到字段、方法参数或方法注解中。 5. `@Qualifier`:当有多个相同类型的Bean时,使用`@Qualifier`注解可以指定要注入的具体Bean。 6. `@...

    Spring实现一个简单的SpringIOC容器

    6. **数据类型转换**:Spring提供了`BeanUtils`工具类,可以实现数据的自动类型转换,使得不同类型的属性值可以自动适配到Bean的相应属性。 7. **对象依赖**:对于依赖的处理,Spring会递归地创建和注入依赖的对象...

    简单手写springIOC注解模式

    以上就是关于“简单手写springIOC注解模式”的主要知识点。通过这些注解,我们可以实现灵活、简洁的Spring应用配置,使得代码更加易于维护和扩展。在实际项目中,这些知识可以帮助我们更高效地构建和管理应用程序的...

    Spring IOC之 使用JSR 330标准注解.docx

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计模式,它允许容器管理对象的生命周期和依赖关系。自Spring 3.0版本起,Spring开始支持JSR 330(JavaTM Standard Edition (Java SE) Dependency ...

    IOC之基于注解的配置bean(上)

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理交由容器处理,使得代码更加解耦、灵活。基于注解的配置是Spring实现IOC的一种方式,它减少了XML配置文件的使用,提高...

    spring入门学习-3、Bean装配(XML).pdf

    5. **Properties**:属性注入的一种方式,主要用于非必填的依赖项或者简单的值注入。 6. **Autowiring-mode**:定义了如何自动装配Bean。Spring支持按类型、按名称等多种自动装配模式。 7. **Lazy-initialization-...

    Spring Bean生命周期&BeanDefinitions1

    Spring的BeanDefinition是用来存储Bean的配置信息,包括Bean的类名、作用域、属性值、依赖的其他Bean、是否为单例、是否延迟加载等。这些信息在容器启动时解析并转化为BeanDefinition对象,后续的Bean实例化和管理都...

    第二章 Spring4 IOC

    3. **依赖注入**:这是IOC的核心,Spring4通过构造器注入、设值注入和接口注入三种方式实现。开发者无需在代码中硬编码依赖,而是由Spring容器负责管理。 4. **Scope**:讨论Bean的作用域,包括singleton(单例)、...

    Spring系列面试题129道(附答案解析)

    19、spring支持集中beanscope? Spring支持以下Bean作用域: - singleton:默认作用域,在Spring IoC容器中只有一个实例。 - prototype:每次请求都会创建一个新的Bean实例。 - request:每次HTTP请求都会创建一个新...

    Spring_1200_IOC_Annotation_Component

    5. `@Value`:可以用来注入基本类型的值或者从配置文件中读取的属性值。 6. `@Scope`:定义bean的作用域,例如单例(`@Scope("singleton")`)或多例(`@Scope("prototype")`)。 **Spring容器** Spring容器是IoC的...

    JSP 中Spring Bean 的作用域详解

    Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1&gt;singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring容器默认Bean的作用域为singleton ...

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

    XML配置文件中可以使用scope属性指定Bean的作用域,该属性可以接受singleton、prototype、request、session、globalSession五个值。 Spring容器中Bean知识点总结了Bean的基本定义、Bean的作用域和Bean的生命周期三...

    Spring2.5.6源代码分析(一):IOC容器

    2. 解析bean定义:`BeanDefinitionReader`负责读取XML中的bean定义,`BeanDefinitionParser`解析每个`&lt;bean&gt;`标签,生成包含属性(如class、scope、dependencies等)的`BeanDefinition`。 3. 注册bean定义:解析后...

    spring基础实例源码

    4. **Spring_0600_IOC_Bean_Scope**: Spring提供了多种bean的作用域,包括单例(Singleton)、原型(Prototype)、会话(Session)和请求(Request)等。理解每种作用域的特点及其应用场景对于优化应用性能和设计...

Global site tag (gtag.js) - Google Analytics