这篇看不懂请看上一篇单独讲BeanPostProcessor接口的
https://www.cnblogs.com/zhangsonglin/p/10939740.html
如果是配置了多个后置处理器,那么它们执行的顺序是由在Spring配置文件定义的顺序决定的,在默认情况下Spring容器会根据后置处理器的定义顺序来依次调用。
我们可以在Spring配置文件中添加多个BeanPostProcessor(后置处理器)接口实现类。
指定多个BeanPostProcessor执行的顺序
在默认情况下Spring容器会根据后置处理器的定义顺序来依次调用,也可以通过实现了BeanPostProcessor接口的实现类去实现Ordered接口,重写该接口中的getOrder方法,getOrder方法返回值为int,默认为0优先级最大,值越小,执行顺序越靠前,优先级越大。
案例:StuBeanPostProcessor、StuBeanPostProcessor2、StuBeanPostProcessor3
StuBeanPostProcessor实现了BeanPostProcessor接口以及Ordered
package com.pojo;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.core.Ordered;
public class StuBeanPostProcessor implements BeanPostProcessor ,Ordered{
/**
* 实例化、依赖注入完毕,
* 在调用显示的初始化之前完成一些定制的初始化任务
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("postProcessBeforeInitialization 实例化、依赖注入完毕,初始化之前执行");
System.out.println("postProcessBeforeInitialization中bean:"+bean+",beanName:"+beanName);
return bean;
}
/**
* 实例化、依赖注入、初始化完毕时执行
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("postProcessAfterInitialization初始化完毕时执行");
System.out.println("postProcessAfterInitialization中bean:"+bean+",beanName:"+beanName);
return bean;
}