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);
posted @ 2023-03-10 19:57  在博客做笔记的路人甲  阅读(196)  评论(0编辑  收藏  举报