spring(IOC) 对象创建时机、对象作用域scope、对象的初始化方法和销毁方法的调用、spring容器总结

来源:互联网 发布:100以内手指算法视频 编辑:程序博客网 时间:2024/05/18 03:30

对象的创建时机
这里写图片描述

这里写图片描述
以上两种情况是默认值,当spring容器启动的时候创建对象

在bean有这样一个属性
这里写图片描述

 <bean id="helloWorld" lazy-init="true"     class="com.itheima09.spring.ioc.createobject.when.HelloWorld"></bean>

Default 相当于false 在spring容器启动的时候,创建对象
True 在context.getBean时创建对象
False 在spring容器启动的时候创建对象

lazy-init意义
如果把lazy-init设置为true,则当spring容器启动的时候,检测不到任何错
default/false。但是如果一个bean中有一个属性,该属性含有大量的数据,这个时候不希望该bean过早的停留在内存中。这个时候需要用到lazy-init为true。

对象的scope
默认情况(scope=singleton)

这里写图片描述

这里写图片描述

在默认情况下放入到spring中的bean是单例的
将来service层和dao层所有的类将放入到spring容器中,所以默认情况下这两
个层的类的实例都是单例的,所以不能把数据声明到属性中。如果声明在属性
中,将会成为共享的。

* 对象创建时机和scope的结合 *

   <bean id="helloWorld"         class="com.itheima09.spring.ioc.lazyscope.HelloWorld"        lazy-init="false"        scope="singleton"></bean>

Scope为prototype,lazy-init为true
在context.getBean时创建对象

Scopse为prototype,lazy-init为false
在context.getBean时创建对象,lazy-init为false失效

当scpose为prototype时,始终在context.getBean时创建对象

Scopse为singleton
是默认情况

Init和destroy

<!--             init-method 初始化方法            destroy-method 销毁方法 -->    <bean id="helloWorld"         class="com.itheima09.spring.ioc.initdestroy.HelloWorld"        init-method="init"        destroy-method="destroy"        scope="prototype"></bean>

这里写图片描述
说明:
1、init方法是由spring内部执行的
2、只有当spring容器关闭以后才能执行destroy方法,spring容器一般情况下
是不会关闭的。只有当web容器销毁掉的时候才可能关闭掉,所以只要一个对
象在spring容器中,在spring容器关闭之前,会一直保留。
3、如果一个bean的配置是scope为”prototype”,则spring容器不负责销毁。

spring总结
Spring容器做的事情
这里写图片描述

总结
创建对象
1、对象的创建方式
2、对象的创建时机
3、对象的创建的模式
4、Init和destroy
5、创建时机和创建模式的结合
初始化和销毁

0 0
原创粉丝点击