BeanPostProcessor用法-修改bean属性

每个bean都会调用,可以在这里处理,bean的一些数据

public interface BeanPostProcessor {
     
    //bean初始化方法调用前被调用
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
    //bean初始化方法调用后被调用
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}

运行顺序

  1. Spring IOC容器实例化Bean
  2. 调用BeanPostProcessor的postProcessBeforeInitialization方法
  3. 调用bean实例的初始化方法
  4. 调用BeanPostProcessor的postProcessAfterInitialization方法

BeanPostProcessor用法-修改bean属性_第1张图片

/**
 * 后置处理器:初始化前后进行处理工作
 * 将后置处理器加入到容器中
 */
@Component
public class Q implements BeanPostProcessor {
     

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
     
        switch (beanName) {
     
            case "a":
            case "b":
            case "c":
            case "p":
            case "q":
                System.out.println("postProcessBeforeInitialization..." + beanName + "=>" + bean);
                break;
            default:
        }

        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
     
        switch (beanName) {
     
            case "a":
            case "b":
            case "c":
            case "p":
            case "q":
                System.out.println("postProcessAfterInitialization..." + beanName + "=>" + bean);
                break;
            default:
        }
        return bean;
    }
}

日志打印

AAAAAAAAAAAAA
postProcessBeforeInitialization…a=>com.zhaokuner.demo.A@576c5536
postProcessAfterInitialization…a=>com.zhaokuner.demo.A@576c5536
BBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCC
postProcessBeforeInitialization…c=>com.zhaokuner.demo.C@73044cdf
postProcessAfterInitialization…c=>com.zhaokuner.demo.C@73044cdf
postProcessBeforeInitialization…b=>com.zhaokuner.demo.B@58112bc4
BBBBBBBBBCCCCCCCCCcom.zhaokuner.demo.C@73044cdf
postProcessAfterInitialization…b=>com.zhaokuner.demo.B@58112bc4

你可能感兴趣的:(springboot)