init-method="init"
destroy-method="destroy"
Bean的3种生命周期定义:1.默认的全局 2.自定义的 3.实现初始化和销毁接口
bean的声明周期
定义
初始化
使用
销毁
Bean的生命周期:
分为4个阶段
定义
初始化
使用
销毁
Bean的生命周期
Bean的生命周期:
定义:
初始化:实现InitializingBean这个接口、在配置Bean的时候配置属性init-method="init"
使用:
销毁:实现接口DisposableBean和配置属性destroy-method="cleanup"
说明,在实际的开发过程中Bean的生命周期由容器来管理,如果使用配置属性的方式来管理Bean的生命周期的话,需要在编写类的同时编写对应的初始化方法和销毁方法。
bean:定义-》初始化-》使用-》销毁
初始化:覆盖InitializingBeanm的afterPropertiesSet方法,配置init-method方法
销毁:覆盖disposablebean的destroy方法,配合destroy-method方法
全局的,default-init-method,default-destory-method
如果在同一个Bean中同时配置了全局(在xml中使用default)初始化方法,接口初始化方法,以及特定Bean的局部初始化方法(在xml中对bean配置),则默认方法会被隐藏,然后先执行接口初始化,再执行特定Bean的初始化。
bean的生命周期:定义——初始化——使用——销毁
初始化:
销毁:
执行顺序:
三者都配置的情况下,全局默认配置不生效,接口先执行,先销毁;自定义配置,后执行后销毁;
注意:? 默认全局配置的方法可以不写,bean依然继续完成自己的生命周期,但是其他两种方式不写会报错!
配置全局默认初始化,销毁方法
Bean的生命周期:定义,初始化,使用,销毁
//初始化 配置init-method <bean id="initBean" class="examples.ExampleBean" init-method="init"></bean> //销毁 配置destroy-method <bean id="destroyBean" class="examples.ExampleBean" destroy-method="cleanup"></bean>
Bean的声明周期
bean的生命周期包括以下四部分:定义、初始化、使用、销毁。
bean的初始化(context启动时加载Bean配置文件并生成Bean实例)包括两种方式:实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertitesSet方法或者配置init-method。
bean使用:取出bean实例,调用其方法。
同样bean的销毁(销毁bean容器创建的所有bean实例)也有两种方式,实现org.springframework.beans.factory.DisposableBean覆盖destory方法或配置destory-method。
或者配置全局的初始化、销毁方法。
bean的生命周期包括以下四部分:定义、初始化、使用、销毁。
bean的初始化包括两种方式:实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertitesSet方法或者配置init-method。
同样bean的销毁也有两种方式,实现org.springframework.beans.factory.DisposableBean覆盖destory方法或配置destory-method或者配置全局的初始化、销毁方法。
Bean的生命周期 之 销毁
的 实现DisposableBean接口,覆盖destroy方法
Bean的生命周期 之 销毁
的 配置destroy-method方法
Bean的生命周期 之 初始化
的实现InitializingBean接口,覆盖afterPropertiesSet方法
Bean的生命周期 之 初始化
的配置init-method方法
Bean的生命周期
-定义
-初始化
-使用
-销毁
优先级:接口方法>内部方法>默认(会被覆盖)
Bean 初始化和销毁方法分三种:
全局配置:default-init-method = "" default-destroy-method = ""
局部配置:init-method="" destory-method = ""
覆盖相应接口的方法: implements InitializingBean,DisposableBean
生命周期
定义
初始化
使用
销毁
接口 > bean配置 (默认不生效 可选方法)
Bean的生命周期
定义、初始化、使用、销毁
初始化和销毁都有两种方法:
直接实现spring中某个接口如 DisableBean,覆盖destroy方法
配置init-method 或destroy-method,指向某个方法
或 配置全局的default intitle-method(优先级最低,其他两种方法配置了的时候,默认方法无效)
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定义所有bean的全局初始化和摧毁方法,bean可以没有全局初始化和摧毁方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毁方法不生效 2.不可以没有初始化和摧毁方法-->
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在init前调用,但是主要的是如果是延迟加载的话,则马上执行
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在destroy前调用,但是主要的是如果是延迟加载的话,则马上执行
配置destroy-method
实现org.springframework.beans.factory.DisposableBean接口,覆盖afterPropertiesSet方法
Bean的生命周期
default-init-method="defaultStart" default-destroy-method="defaultStop"><!--定义所有bean的全局初始化和摧毁方法,bean可以没有全局初始化和摧毁方法 -->
<bean id="beanLifeCycle" class="xjh.bean.BeanLifeCycle" init-method="start" destroy-method="stop"></bean><!-- 1.全局的初始化和摧毁方法不生效 2.不可以没有初始化和摧毁方法-->
public void afterPropertiesSet() throws Exception {//方法将在所有的属性被初始化后调用,但是会在init前调用,但是主要的是如果是延迟加载的话,则马上执行
实现接口的初始化和销毁先于在配置文件中配置的初始化和销毁方法,他们都会覆盖掉全局配置的这些方法,全局的配置的方法不执行。配置了全局的初始化和销毁方法,即使没有实现这些方法,也不会报错。另外两种方法配置了就必须实现,否则会报错
Bean的生命周期-配置全局的初始化/销毁方法
Bean的生命周期-销毁2