生命周期
生命周期指的是一个对象从创建到销毁的整个过程或阶段。
在软件开发中,生命周期描述了一个对象或组件的状态变化和相关操作。
而SpringBean的生命周期大致可分为“六大阶段”
六大阶段
一、实例化(Instance)
Spring 容器根据配置信息创建 Bean 的实例。首先在堆内存中申请一片创建对象的空间,对象的属性值一般是默认。通过调用createBeanInstance进行实例化。
二、初始化:属性赋值(Populate properties)
创建 Bean 实例后,Spring 容器会将配置文件中的属性值或注解中的属性值设置到相应的 Bean 实例中,包括基本类型、引用类型等。通过调用populateBean-set方法进行赋值。
三、初始化:BeanPostProcessor 处理
在以上步骤后已经初始化一个普通的对象。但由于需要判断是否进行扩展,Spring 容器会检测是否存在实现了 BeanPostProcessor 接口的类。如果存在,要调用BeanPostProcessor 接口进行处理。我们一般称这个步骤为执行前置和后置方法,实质上也是一个AOP。
四、初始化:初始化方法调用(Initialization)
调用InvokeInitMethod判断如果 Bean 实现了 InitializingBean 接口,Spring 将调用其 afterPropertiesSet() 方法。如果配置了 init-method 方法,则会调用该方法。注意的是这一步是在属性赋值之后,前置和后置方法中间进行的,用于执行一些初始化操作
五、Bean 使用(Bean Ready for Use)
初始化完成后,Bean 可以被容器使用了,可以调用其相关方法。
六、销毁(Destruction)
当容器关闭时,或者通过配置的方式进行销毁时,会调用 Bean 的销毁方法。如果 Bean 实现了 DisposableBean 接口,Spring 将调用其 destroy() 方法。如果配置了 destroy-method 方法,则会调用该方法。