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>

     

  • 相关阅读:
    Websocket --socket.io的用法
    Vuex中mapState的用法
    vue中关于computed的一点理解
    webuploader大文件分片,多线程总结
    pdf的使用遇到的问题
    单文件WebUploader做大文件的分块和断点续传
    webUploader大文件断点续传学习心得 多文件
    iframe子页面与父页面元素的访问以及js变量的访问
    pwa 集合
    mpvue 转小程序实践总结
  • 原文地址:https://www.cnblogs.com/jumpkin1122/p/11595455.html
Copyright © 2011-2022 走看看