Spring bean的生命周期控制与bean的销毁时机

发布于:2022-11-28 ⋅ 阅读:(477) ⋅ 点赞:(0)

目录

 第一种生命周期控制方法(xml文件配置型)

1.在dao实现类中创建提供生命周期的控制方法

2.在Spring中配置生命周期的控制方法

第二种控制生命周期的方法(Spring接口控制法)(了解一下即可)

1.在dao实现类实现InitiaIizingBena,与DisposableBean接口

bean在整个初始化的过程中都经历了那些阶段

bean的销毁时机


...生命周期:从创建到消亡的完整过程

...bean生命周期:bean从创建到销毁的整体过程

...bean生命周期的控制:在bean创建后销毁前做一些事情

 第一种生命周期控制方法(xml文件配置型)

1.在dao实现类中创建提供生命周期的控制方法

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }

    //表示bean初始化对应的操作
    public void init() {
        System.out.println("dao对象的初始化...");
    }

    //表示bean销毁前对应的操作
    public void destroy() {
        System.out.println("dao对象的销毁...");
    }

}

2.在Spring中配置生命周期的控制方法

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"/>

第二种控制生命周期的方法(Spring接口控制法)(了解一下即可)

1.在dao实现类实现InitiaIizingBena,与DisposableBean接口

package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class BookServiceImpl implements BookService,InitializingBean,DisposableBean{

    private BookDao bookDao;

    //这个是Di入门案例中的问题,忘记了请去看博客
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    /**
     * 复写的BookService接口中的的方法
     */
    @Override
    public void save() {
        System.out.println("service Save...");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("Service destroy...");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("Service init...");
    }
}

bean在整个初始化的过程中都经历了那些阶段

初始化容器

   1.创建对象(内存分配,可以理解为new)

   2.执行构造方法(DI入门案例)

   3.执行属性注入(set操作,优先于bean的初始化)

   4.执行Bean的初始化方法

使用Bean 

   1.执行业务操作

销毁bean

   1.执行Bean的销毁方法

bean的销毁时机

....IOC容器关闭前才会触发bean的销毁,ctx.close;

....关闭容器的方式

        1.手工关闭容器

         (ConfigurableApplicationContext接口的close()方法)

        2.注册关闭钩子,在虚拟机推出之前先关闭容器,在推出虚拟机

         (ConfigurableApplicationContext接口的registerShutdownHook();方法)

本文含有隐藏内容,请 开通VIP 后查看