Bean生命周期可以粗略的划分为五大步:
- 第一步:实例化Bean
- 第二步:Bean属性赋值
- 第三步:初始化Bean
- 第四步:使用Bean
- 第五步:销毁Bean
在以上的5步中,第3步是初始化Bean,如果你还想在初始化前和初始化后添加代码,可以加入“Bean后处理器”。
编写一个类实现BeanPostProcessor类,并且重写before和after方法:
package com.spring6.bean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class LogBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("Bean后处理器的before方法执行,即将开始初始化");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("Bean后处理器的after方法执行,已完成初始化");
return bean;
}
}
BeanPostProcessor
是 Spring 框架中的一个接口,用于在容器实例化 Bean 之后,初始化 Bean 之前,对 Bean 进行一些自定义的处理操作。通过实现 BeanPostProcessor
接口,您可以在 Bean 的初始化前后插入自定义逻辑,例如对 Bean 进行一些额外的初始化、清理、或者修改。
BeanPostProcessor
接口定义了两个方法:
postProcessBeforeInitialization
:在 Bean 的初始化方法调用之前,对 Bean 进行一些处理。postProcessAfterInitialization
:在 Bean 的初始化方法调用之后,对 Bean 进行一些处理。
在这个示例中,CustomBeanPostProcessor
类实现了 BeanPostProcessor
接口,并重写了 postProcessBeforeInitialization
和 postProcessAfterInitialization
方法。在这两个方法中,您可以编写自定义的逻辑来处理 Bean。然后,您可以将这个 CustomBeanPostProcessor
注入到 Spring 容器中,以便它可以对所有的 Bean 进行处理。
在spring.xml文件中配置“Bean后处理器”:
<!--配置Bean后处理器。这个后处理器将作用于当前配置文件中所有的bean。-->
<bean class="com.spring6.bean.LogBeanPostProcessor"/>
注意:在spring.xml文件中配置的Bean后处理器将作用于当前配置文件中所有的Bean。
参考:动力节点