`
徜徉の小溪
  • 浏览: 447514 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在spring来管理实例对象prototype和singleton的选择.针对action如何使用

阅读更多

默认情况下,从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只需维护一个实例,显然性能高一些

1
2
分享到:
评论

相关推荐

    spring6pdf详细讲解

    Spring 提供了多种方式来解决循环依赖问题,包括使用 singleton 和 prototype 等范围的 Bean。 在 Spring 中,反射机制是框架的核心技术之一。反射机制使得开发者可以在运行时动态地访问和操作对象的属性和方法。 ...

    《spring in action》中文第三版

    Spring框架是Java平台上最受欢迎的企业级应用开发框架之一,它提供了一种简单的方式来管理对象及其依赖关系,简化了应用程序的开发过程。下面将围绕第二章“Bean”的内容展开详细的知识点解析。 ### Bean的概念 在...

    Struts和Spring整合示例讲解

    这样,Struts就会通过Spring来创建和管理Action对象,而不是使用默认的Singleton模式。 接下来,在Spring的配置文件(如applicationContext.xml)中,定义Action类的bean,设置其scope为prototype,因为通常一个...

    Spring整合Struts 的详细开发文档

    Action 类通常需要标记为 `prototype` 或 `singleton` 作用域,以便 Spring 可以管理其生命周期。 4. **配置 Struts 动作映射**: - 在 Struts 的动作映射配置中,不再直接定义 Action 类的全限定名,而是使用 ...

    韩顺平Spring笔记.pdf

    Spring是一个容器框架,不同于Web框架如Struts(处理JSP、Action、ActionForm)或ORM框架Hibernate(处理持久层),它关注于管理和维护应用中的对象(Bean)及其相互关系。 在Spring中,Bean是Java中的任何对象,...

    Spring in action 3rd (第三版)

    - **Spring 框架概述**:Spring 是一个开源框架,它为 Java 应用程序提供了一种轻量级的方式来管理和组织业务对象。Spring 通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, ...

    spring学习笔记.doc

    在Spring中,这意味着对象的创建和管理由Spring容器负责。通过配置文件或者注解,Spring知道如何创建和管理对象,这样就降低了对象间的耦合度,因为对象不再需要自己去寻找依赖的对象。 依赖注入(DI)是IoC的具体...

    《Spring+in+action+中文版(第4版)》读书笔记

    2. **Java配置**:这种方式允许开发者使用Java类来管理bean的生命周期和配置信息,这种方式更加灵活且易于维护。 3. **自动装配**:Spring可以通过扫描类路径下的类,自动检测和装配bean,这种方式减少了显式配置的...

    struts2+spring+hibernate整合中spring注入出错。页面中报空指针异常。高手来看看怎么决绝。

    当整合这三个框架时,Spring通常作为核心来管理其他两个框架的实例。Spring会创建Struts2 Action的实例,并通过DI注入依赖,比如Hibernate的SessionFactory或DAO对象。如果在页面中出现空指针异常,通常意味着某个...

    Struts2+Spring3+Hibernate3整合文档

    由于Struts2中的Action对象是针对每个请求生成一个新的实例,而Spring默认使用`singleton`作用域来管理Bean。为了与Struts2保持一致,需要将Action的Scope设置为`prototype`或`session`。 - **`prototype`**:为每...

    spring框架学习

    Spring通过DI来管理对象的依赖关系,可以在运行时自动将依赖的对象注入到Bean中。 - **案例:测试IoC(set注入)**:通过set方法来注入依赖对象,例如,定义一个接口和其实现类,然后在配置文件中通过`<bean>`元素...

    spring注解方式解析

    而在Spring中,这种控制权被反转,由Spring容器根据配置(或注解)来管理和提供对象及其依赖。注解方式的自动装配使得开发者无需在XML配置文件中声明bean之间的依赖关系,只需在类上使用@Autowired注解即可。例如: ...

    Struts、Hibernate、Spring经典面试题.pdf

    - Singleton和prototype的作用域,分别表示单例模式和每次请求都会创建一个新的实例。 - Spring的事务管理,可以使用声明式事务控制,简化事务管理的复杂性。 - Spring支持的数据访问对象(DAO)模式和JDBC抽象层...

    spring注解实例

    学习这个实例,你可以了解到如何在实际项目中利用Spring注解来提高代码可读性、减少配置,并了解SSH2架构下Spring如何与其他组件协同工作。同时,通过阅读文档,你可以深入理解每个注解的用法和背后的设计理念,...

    spring_精简教程

    Spring在这一过程中扮演着重要的角色,负责创建各个组件的实例并管理它们之间的依赖关系。 #### 三、Spring容器对对象的管理 1. **核心开发包**:使用Spring框架进行开发时,需要导入核心的开发包,如`spring.jar`...

    Spring知识整理

    - **Singleton 和 Prototype**:Spring 中有两种主要的对象作用域: - **Singleton**:每个 Spring IoC 容器只会存在一个 Singleton 类型的 Bean 实例。适用于那些状态不会被修改的对象。 - **Prototype**:每次从...

    spring与struts2整合

    两种方法的主要区别在于,第一种方法中Action的生命周期由Spring管理,可以设置为prototype作用域,每次请求都会创建新的实例;而第二种方法中,Action的生命周期由Struts2管理,通常设置为singleton作用域,但也...

    图解SSH(struts2,spring,hibernate)框架配置步骤

    <bean id="loginAction" class="test.action.LoginAction" scope="prototype"/> ``` 这里,`id` 为 Bean 的唯一标识,`class` 是 Action 类的全限定名,`scope` 可以设置为 "prototype" 或 "singleton",前者表示...

    Spring+Hibernate+Struts

    总的来说,这个集成实例涵盖了Java Web开发中的关键技术,展示了如何利用Spring来管理和协调各个组件,通过Hibernate处理数据库交互,而Struts则负责HTTP请求的处理和视图的展示。这样的架构有助于创建可维护、可...

Global site tag (gtag.js) - Google Analytics