Spring:简述一下bean的生命周期吧?
bean的生命周期是指它在ioc容器中从创建到销毁的整个过程。
<hr>
一、生命周期
1、实例化,为对象分配内存。
2、构造方法。
3、属性注入,set注入。
4、初始化方法
5、业务操作
6、销毁方法
二、初始化方法、销毁方法
1、通过属性配置,类中的任意方法为初始化、销毁方法
<!--配置类中的init方法为初始化方法,destroy方法为销毁方法--> <bean id="demoDao" class="com.lurenjia.dao.DemoDao" init-method="init" destroy-method="destroy"></bean>
2、通过实现接口,重写方法来指定
public class DemoDao implements InitializingBean , DisposableBean { @Override public void afterPropertiesSet() throws Exception { //在属性注入之后执行的初始化方法 } @Override public void destroy() throws Exception { //销毁方法 } }
三、销毁方法执行条件
只有在ioc容器正常关闭的时候,bean的销毁方法才会被执行。
在虚拟机关闭前关闭ioc容器:
1、通过容器的close方法,暴力关闭
在ApplicationContext的子接口ConfigurableApplicarionContext中提供了close方法。
//获取到ioc容器对象 ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); //获取到bean对象 DemoDao demoDao = applicationContext.getBean("demoDao",DemoDao.class); //暴力关闭ioc容器 applicationContext.close();
2、注册关闭钩子,让虚拟机关闭前先关闭ioc容器
在ApplicationContext的子接口ConfigurableApplicarionContext中提供了注册方法。
//获取到ioc容器对象 ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml"); //注册关闭钩子,虚拟机关闭前先关闭ioc容器 applicationContext.registerShutdownHook(); //获取到bean对象 DemoDao demoDao = applicationContext.getBean("demoDao",DemoDao.class);