1后置处理器是什么?
一个类,实现了接口BeanPostProcessor 定义的两个方法,这两个方法分别是:postProcessBeforeInitialization和postProcessAfterInitialization,顾名思义,就是分别在bean的init-method前后进行分别执行这两个方法。
多后置处理器的有序性的
bean在使用的过程中可以经过多个后置预处理的处理,但是,一般情况下,多个实现后置处理器接口的类是有先后顺序的,为了让IOC明白后置处理器之间的先后顺序,类还要实现Ordered接口,通过接口里的order属性来控制后处理器的先后顺序,默认为0,为最高优先级。
同一个容器中的后置处理器是通用的
一个context中的后置处理器实现类不是针对某一个的bean,这个context中的所有bean的产生过程都回去调用这个后置处理器,为了有针对性,可以通过bean的id来执行特异话的操作。
2 后置处理器实现类
BeanPostProcessor 接口源码
@Nullable
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Nullable
default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
可见,返回值必须为非null,且必须是Object类型,和从context中get出来的一致。由于是有默认实现,因此,不是必须要重写方法的。现在看一个后处理器类的实例:
package 后置处理器;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class PostProcessorExample implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(