`
dove19900520
  • 浏览: 599496 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring中的属性scope

阅读更多

 

之前在开发过程中遇到了一个问题,当request发起下一个请求的时候,action中的属性值并没有清除,而是继续采用上次使用过的参数值进行查询并响应,导致数据查询不真实或失败。对此,有同事告诉我说,需要在spring配置文件的bean中添加属性scope=prototype。结果还真的有用。

下面是我对spring的bean中scope属性的一些查询与总结:

默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性)

Singleton: Spring容器只存在一个共享的bean实例,是默认的配置。

Prototype: 每次对bean的请求都会创建一个新的bean实例。

二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

在 Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和 global session。

如果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的web.xml中增加这么一个ContextListener:

org.springframework.web.context.request.RequestContextListener 以上是针对Servlet 2.4以后的版本。比如Request作用域!

singleton是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的,如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 ;如果你的类是有状态的 ,那就必须显示的设置为prototype了。

在ssh2 项目中 , struts2的action交由spring管理的时候 ,spring默认是singleton的 ,而struts2的action显然是有状态的 ,所以必须显示设置为 scope=“prototype”

prototype为原型模式 , 每次action请求过来都会创建一个action

但是对那些Dao的实现类推介scope=“singleton” ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些。

本文摘自:http://aaagu1234.blog.163.com/blog/static/40093715201091933942422/

分享到:
评论

相关推荐

    Spring之scope讲解测试示例代码

    在Spring框架中,`scope`是一个非常重要的概念,它决定了Bean的生命周期和实例化策略。在Spring中,Bean的scope主要有以下几种: 1. **singleton(单例)**:这是默认的scope,每个容器中只有一个实例。无论多少次...

    知识共享-Spring注入属性值案例(雷惊风).

    ### Spring框架中的属性值注入详解 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用程序。它提供了全面的基础架构支持,包括依赖注入(Dependency Injection, DI)、面向切面编程...

    day38 08-Spring的id、name和scope顺序

    在Spring框架中,`id`、`name`和`scope`是配置bean时常见的三个属性,它们对于理解和管理Bean的生命周期至关重要。今天我们将深入探讨这三个属性的含义、使用方法以及它们之间的顺序规则。 首先,`id`是Spring Bean...

    Spring中常用注解

    在Java开发领域,Spring框架以其强大的功能和灵活的配置闻名,而注解(Annotation)是Spring框架中的一个重要组成部分,极大地简化了代码的编写和维护。本文将深入探讨Spring框架中的一些常用注解,并通过实例来解析...

    07-IoC配置-scope属性

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

    spring 中特殊bean用法

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

    spring bean的生命周期

    如果在XML配置中指定了`class`属性,Spring将根据该属性创建Bean。 - **属性注入**:Spring会将依赖注入到Bean中,包括值注入(value,ref)和集合注入(list,map,props,set)。 - **初始化回调**:Spring支持...

    Spring Boot中使用LDAP来统一管理用户信息的示例

    Spring Boot 中使用 LDAP 统一管理用户信息的示例 本篇文章主要介绍了 Spring Boot 中使用 LDAP 来统一管理用户信息的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。下面我们将详细介绍 LDAP 的基础...

    spring中所需要的知识点及学习方向文档

    对象的`scope`属性定义了其在容器中的生命周期和可见范围,常见的有: 1. `singleton`:默认值,表示容器中只有一个共享的实例。 2. `prototype`:每次请求都会创建一个新的实例。 3. `request`:在HTTP请求范围内,...

    Spring.pdf

    scope属性用于定义Spring bean的作用域,它决定了Spring容器创建对象的时机以及从容器中检索bean的方式。scope属性有两个主要值: - singleton:默认值,该bean在Spring容器被创建时完成初始化,每次获取的是同一个...

    Spring容器中IOC

    例如,在配置文件中添加了一个bean标签,并指定了id和class属性,Spring容器就会根据这个配置信息来创建对象实例。 IOC容器还提供了依赖注入的功能,可以将对象之间的关系维护到容器中,例如,ScheduleController...

    spring-context-4.2.xsd.zip

    《Spring框架中的Context模块与XSD配置详解》 在Java企业级开发中,Spring框架扮演着至关重要的角色,尤其在Spring的Context模块中,通过XML Schema(XSD)进行配置,使得应用程序的组件管理和依赖注入变得简洁高效...

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

    Spring的内部bean是指在另一个bean的属性中定义的bean,它仅在包含它的外部bean的上下文中存在。 22、什么是spring装配。 Spring装配是指将对象组装到一起,并设置它们之间的依赖关系的过程。 23、自动装配有哪些...

    4.Spring应用扩展.pptx

    例如,可以将数据库连接信息写入属性文件,如`database.properties`,然后在Spring配置文件中使用`PropertyPlaceholderConfigurer`引入属性文件。这样,我们就可以在XML配置中使用`${...}`的方式来引用属性值,如`${...

    spring_精简教程

    - **`scope`属性**:用于指定Bean的生命周期范围,如`singleton`(单例模式)、`prototype`(原型模式)等。 - **`init-method`与`destroy-method`属性**:分别用于指定Bean的初始化方法和销毁方法。 #### 四、...

    spring bean life cycle

    2. **属性注入**:实例化后,Spring会根据Bean定义中的`property`或`ref`属性为Bean注入依赖。这包括了通过setter方法设置值,以及通过构造函数传递参数。 3. **初始化**:在属性注入完成后,Spring会执行Bean实现...

    Spring-IOC实现

    - Bean的生命周期中,scope属性定义了Bean的实例化策略。例如,singleton(单例)表示在整个应用中只有一个实例,prototype(原型)表示每次请求都会创建一个新的实例。 9. **AOP(面向切面编程)** - 虽然不是...

    spring02-5

    在实际开发中,除了以上的基本注解,还可以使用`@Autowired`进行依赖注入,`@Scope`定义Bean的作用域,`@Value`注入属性值,以及`@Qualifier`来指定特定的Bean等。这些注解共同构建了Spring的注解驱动开发模型,使得...

    spring-demo03-spring创建对象的5种方式.zip

    在Spring框架中,创建对象是核心功能之一,它提供了多种方式来管理Bean的生命周期和依赖注入。本项目"spring-demo03-spring创建对象的5种方式.zip"着重探讨了Spring如何实例化对象,让我们详细了解一下这五种方法。 ...

    spring actionscript 入门例子

    Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...

Global site tag (gtag.js) - Google Analytics