源码地址:https://github.com/spring-projects/spring-framework
仓库地址:https://gitcode.net/qq_42665745/spring/-/tree/07-init-destroy
初始化和销毁
两种配置方式:
1.实现InitializingBean和DisposableBean接口
2.在xml配置时加上init-method和destroy-method
初始化和销毁发生在bean的初始化过程中:
-
在使用beanDefinition创建bean对象时,先初始化bean对象,再注入属性,然后执行前置BeanPostProccessor,再判断bean是否实现了InitializingBean接口或配置了init-method,则执行自定义的初始化内容,再执行后置BeanPostProccessor,如果 bean 实现了 DisposableBean 接口或者配置了销毁方法,则注册该 bean 为可销毁的 bean。销毁的bean使用适配器模式进行了适配,包装了一个任意的bean对象,不管用哪种方式配置的销毁方法,都可以统一执行
-
销毁的执行时机是通过注册一个关闭钩子实现的,在jvm关闭是创建一个线程执行所有对象的销毁操作。