BeanPostProcessor作用:对Spring工厂所创建的对象,进行再加工。(AOP 的底层实现)
- 后置处理 Bean 原理分析
1、Object postProcessBeforeInitialization(Object bean, String beanName)
**作用:**Spring创建完对象后,并进行注入,可以运行Before方法进行加工
**获得Spring创建好的对象:**通过方法的参数最终通过返回值交给Spring框架
2、Object postProcessAfterInitialization(Object bean, String beanName)
**作用:**Spring执行完对象初始化操作后,可以运行After方法进行加工
**获得Spring创建好的对象 :**通过方法的参数最终通过返回值交给Spring框架
注意:此处注意与对象的初始化操作的对比以及初始化操作流程。spring系列笔记 - 第⼗章 对象的生命周期
实战中:很少处理Spring的初始化方法:没有必要区分Before 和 After方法。只需要执行其中一个After方法即可。
- BeanPostProcessor 开发步骤
实现BeanPostProcessor接口即可:
public class MyPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
Category category = (Category) bean;
category.setName("tinting");
return category;
}
}
<bean id="beanPostProcessor" class="xxxxx.xxx.MyPostProcessor"></bean>
注意:上述两个方法返回的对象就是初始化的bean对象。
-
注意细节
BeanPostProcessor会对Spring工厂中创建的所有对象进行加工
评论区