海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020javaweb框架教程:spring对象创建的细节

未分类
2020-12-04 14:35:11
1822677238@qq.com

手机扫码查看

2020javaweb框架教程:spring对象创建的细节

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注