未分类
2020-12-04 14:35:11
1822677238@qq.com
手机扫码查看
2020javaweb框架教程:spring对象创建的细节
单例和多例
1.默认情况下bean是单例的,scope=”singleton’;
2.多例配置:scope=”prototype”;
3.scope=”request”;
4.scope=”session”;
<!-- singleton是单例 获取的对象都是同一个地址 --> <bean name="users2" class="entity.Users" scope="singleton"></bean> <!-- prototype 是 多例 每次构建对象都 new一个新的地址 --> <bean name="users2" class="entity.Users" scope="prototype"></bean>
bean创建模式
singleton单例(默认);
在同一个spring工厂中,一个Bean只会创建一个对象。
多次getBean(),或多次注入使用的是同一个对象。
随工厂创建而创建,随工厂关闭而销毁。
prototype:多例(原型)
<bean class="bean.Users" id="users" scope="prototype"/>
每次getBean(),或多次注入都会重新创建对象。
不随工厂创建而创建,不随工厂关闭而销毁
被用到时才会创建对象。
生命周期
单例Bean:构造(工厂启动)–>set–>init–>User–>destory(销毁)
多例Bean:获取时才创建–>set–>init–>User–>不会随工厂关闭而销毁
延迟创建对象
lazy-init=”true” 延迟创建对象,容器启动时不创建,获取时再创建
lazy-init=”false” 默认值,不延迟创建对象,容器启动时立即创建
<bean name="users2" class="entity.Users" scope="singleton" lazy-init="true"></bean>
注:延迟创建对象只对 单例 有效
init-method="init" destroy-method="destroy
init初始化方法、destroy销毁方法,需要调用destroy()方法或close()方法,然后将ApplicationContext改成AbstractApplicationContext



发表回复