Spring IOC 单例和多例

一、概述

        Spring容器管理的bean在默认情况下是单例的,也即,一个bean只会创建一个对象,存在内置map中,之后无论获取多少次该bean,都返回同一个对象。

        但是在实际开发中是存在多例的需求的,Spring也提供了选项可以将bean设置为多例模式。

二、配置多例

        多例 scope="prototype" 

        单例 scope="singleton"  (默认方式)

        例:<bean id="dog" class="com.dreamguard.domain.Dog" scope="prototype"></bean>

三、bean的生命周期

3.1 单例模式下的生命周期 

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

3.2 多例模式下的生命周期

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


完整代码下载

        https://github.com/hailindai/SpringSample

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容