• 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>

     

  • 相关阅读:
    nvm切换node失效
    React.memo is not a function
    Path must be a string. Received true
    如何通过node读取excel文件内的数据
    js中四舍五入的方法
    为什么不推荐使用数组的includes方法---记两次includes引起的问题
    改变input复选框样式
    如何使用伪元素扩大按钮可点击区域
    简单实用的纯css按钮效果
    ie6 ie7 ie8 ie9和FireFox Chrome中css区别总结
  • 原文地址:https://www.cnblogs.com/jumpkin1122/p/11595455.html
Copyright © 2020-2023  润新知