`

Singleton和Prototype区别

    博客分类:
  • java
阅读更多
默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性)
Singleton:
Spring容器只存在一个共享的bean实例,默认的配置。
<bean id="example" class="com.tarena.bean.Example"/>
Prototype:
每次对bean的请求都会创建一个新的bean实例。
<bean id="example" class="com.tarena.bean.Example" singleton=”false”/>
二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。
[br][br][在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和global session。
如果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的web.xml中增加

这么一个ContextListener:
<web-app>
   <listener>
         <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
   </listener>
</web-app>
以上是针对Servlet 2.4以后的版本。
比如Request作用域:
<bean id="loginAction" class="com.tarena.LoginAction" scope="request"/> [size=medium]
[/size]
分享到:
评论

相关推荐

    通俗易懂spring之singleton和prototype.docx

    **Singleton和Prototype的区别** 1. **实例化次数**:Singleton在整个生命周期中只实例化一次,而Prototype每次请求都会实例化一个新的对象。 2. **生命周期管理**:对于Singleton Bean,Spring容器会在初始化时...

    Spring实战之Bean的作用域singleton和prototype用法分析

    本篇文章将深入探讨两种主要的作用域:singleton和prototype,并通过实例分析其用法和注意事项。 首先,`singleton`是Spring默认的作用域,意味着当Spring容器初始化时,对于每个具有`singleton`作用域的Bean,它只...

    singleton Bean 创建 prototype Bean

    在Spring框架中,Bean的两种主要作用域是Singleton和Prototype。Singleton Bean表示在整个Spring IoC容器中只有一个实例,而Prototype Bean则表示每次请求都会创建一个新的实例。这两种作用域的使用场景和实现方式都...

    Spring中的singleton和prototype的实现

    Spring中的singleton和prototype的实现 Spring框架中,bean的作用域是指在容器中bean的实例化和生命周期管理。其中,singleton和prototype是两个最基本的bean作用域。本文将详细介绍Spring中的singleton和...

    简单了解spring bean作用域属性singleton和prototype的区别

    Spring Bean作用域属性singleton和prototype的区别详解 Spring Framework中,Bean的作用域属性是指Bean实例的生命周期和作用域。Spring提供了五种作用域:singleton、prototype、request、session和global session...

    (创建型模式)Singleton模式

    除了上述实现方式,还需要注意Singleton模式的一些扩展和讨论。例如,Singleton模式破坏了类的封装性,使得类的实例化过程不再由类自身控制,而是外部代码控制。这在某些情况下可能引发问题,比如测试和序列化。为了...

    前端大厂最新面试题-Singleton Pattern.docx

    Singleton.prototype.getName = function() { console.log(this.name) }; Singleton.getInstance = function(name) { if(!this.instance) { this.instance = new Singleton(name); } return this.instance }; ...

    设计模式精解-GoF 23种设计模式解析

    - **1.5 Prototype模式**:原型模式通过克隆已存在的实例来创建新实例,从而避免每次都需要重新创建相同的对象。这种模式特别适用于创建大量相似对象的情况。在C++中,可以通过实现clone()函数来实现原型模式。 ###...

    spring1.2学习心得分享

    创建对象的模式(使用范围):scope控制,可以使用singleton和prototype d.初始化: e.资源释放:仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! ...

    spring学习心得

    创建对象的模式(使用范围):scope控制,可以使用singleton和prototype d.初始化: e.资源释放:仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! ...

    spring1.1开发理解

    创建对象的模式(使用范围):scope控制,可以使用singleton和prototype d.初始化: e.资源释放:仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! ...

    spring6pdf详细讲解

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

    基于java的企业级应用开发:Bean的作用域.ppt

    在【描述】中,提到了Bean的两种主要作用域:singleton和prototype,它们在不同的场景下有着重要的应用。 **Singleton作用域** Singleton是Spring容器的默认作用域,意味着无论何时,只要Spring容器需要该Bean,它...

    详解Spring中bean的作用域

    在 Spring 中,bean 的作用域可以分为五种:singleton、prototype、request、session 和 global session。这五种作用域类型决定了 bean 的实例化和生命周期的管理方式。 1. Singleton 作用域 Singleton 作用域是...

    BeanFactory内部解析:Spring框架的心脏如何运作

    Bean 的作用域管理: BeanFactory 支持不同的 bean 作用域,如 singleton、prototype、request、session 等。通过配置不同的作用域,可以控制 bean 对象的生命周期,并确保在不同的作用域下能够正确地管理 bean 对象...

    设计模式 c++ 代码示例

    这是关于设计模式的c++代码,涵盖了abstractFactory, Builder, Adapter, Components,Singleton,Prototype,Bridge 还有未完的部分 将下次再传。

    springboot prototype设置多例不起作用的解决操作

    1. `Singleton`:默认作用域,每个Bean只存在一个实例,全局共享。 2. `Prototype`:每次请求都会创建一个新的Bean实例。 3. `Request`:每个HTTP请求都会创建一个新的Bean实例。 4. `Session`:每个HTTP Session...

    javascript单例模式

    Singleton.prototype.method = function() { // 实现方法 }; // 使用单例 var instance1 = Singleton(); var instance2 = Singleton(); console.log(instance1 === instance2); // 输出:true ``` 这段代码中,...

    C语言-设计模式汇总,包含23中常见设计模式,利用C语言实现;

    Prototype* prototype = malloc(sizeof(Prototype)); prototype-&gt;data = strdup(data); return prototype; } Prototype* clonePrototype(const Prototype* original) { Prototype* clone = createPrototype...

Global site tag (gtag.js) - Google Analytics