zoukankan      html  css  js  c++  java
  • Spring中单例和多例模式

    Spring容器管理的bean在默认情况下是单例的,也是一个bean只会创建一个对象,存在内置 map中,之后无论获取多少次该bean,都返回同一个对象。这样可以减小了对象的创建,从而减小了内存的开销。

    bean在单例或多例模式下的生命周期:

    单例模式

    bean在单例模式下,spring容器启动时解析xml文件发现该bean标签后,直接创建该bean对象存入内部map中保存,此后无论调用多少次getBean()获取该bean都是从map中获取该对象返回,一直是一个对象。此对象一直被spring容器持有,直到容器推出时,随着容器的退出对象被销毁。

    多例模式

    bean在多例模式下,spring容器启动时解析xml发下该bean标签后,只是将该bean进行管理,并不会创建对象,此后每层使用getBean()获取该bean时,spring都会重新创建该对象返回,每层都是一个新的对象。这个对象spring容器并不会持有,什么时候销毁却决于该对象的用户自己什么时候销毁该对象。

    在实际开发中,也存在多例的需求的,这时我们需要创建对象的方式多例。设置方式如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
            
            <!-- 
                    scope属性控制当前bean的创建模式:
                            singleton:则当前bean处在单例模式中,默认就是此模式
                            prototype:则当前bean处在多例模式中
             -->
            <bean id="cart" class="com.spring.beans.Cart" scope="prototype"></bean>
            
    </beans>

     

  • 相关阅读:
    Android -- DiskLruCache
    Android -- EventBus解析
    Android -- Annotation
    Ubuntu 1604 安装配置 kafka,并配置开机自启(systemctl)
    zookeeper/kafka的部署
    pdf 中内容的坐标系
    C# 获取Windows 设备信息
    C#读取Word指定页的内容
    再看C# ThreadPool与Task的认识总结
    同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
  • 原文地址:https://www.cnblogs.com/jumpkin1122/p/11595455.html
Copyright © 2011-2022 走看看