生命周期:从创建到消亡的完整过程。
    bean生命周期:bean从创建到销毁的整体过程。
    bean生命周期控制:在bean创建后到销毁前做的一些事情。

    (基于入门案例)
    方法一:
    首先在对应要控制生命周期的bean中写对应的init()和destory()方法。
    image.png

    然后,要在配置文件中配置对应的初始化和销毁的方法。
    在bean标签中的init-method=”init” destroy-method=”destory”.
    image.pngimage.png
    运行时发现并没有运行destory()方法。
    因为程序执行完之后java虚拟机直接退出,没有bean销毁的机会。要执行destory()方法就要把IOC容器关闭。
    此时就需要调用ClassPathXmlApplicationContext中的close()方法将IOC容器关闭。
    image.png
    当然这种关闭方式比较暴力,还有另外一个方法也能关闭,同时再关闭之前会执行完所有的代码,这就是关闭钩子registerShutdownHook()。会在关闭虚拟机之前把容器关掉。并且关闭钩子在任何时间都起作用。image.png

    方法二:
    在Service中实现接口来控制生命周期。
    image.png
    image.png
    Bean生命周期
    (1)初始化容器
    创建对象(内存分配)
    执行构造方法。
    执行属性注入(set操作)。
    执行bean初始化方法。
    (2)使用bean
    执行业务操作。
    (3)关闭/销毁容器
    执行bean销毁方法。

    Bean销毁时机
    容器关闭前触发bean销毁
    关闭容器方式:
    (1)手工关闭容器
    (2)注册关闭钩子,在虚拟机退出前先关闭容器再退出虚拟机。