九、BeanPostProcessor

一、什么是BeanPostProcessor?

所谓的BeanPostProcessor其实是Spring为我们打开的一个窗口,就犹如拦截器一样,在bean对象初始化之前和初始化完成之后,可以对bean进行进一步的包装;

BeanPostProcessor的作用: 对Spring工厂所创建的对象,进行再加工,它也成就了AOP的实现

BeanPostProcessor本质上就是一个接口,通过实现这个接口的方法,就能对Bean进行包装
九、BeanPostProcessor_第1张图片
备注:在上图中一个bean的创建首先会调用类的无参构造,然后注入(DI),再然后进入到了postProcessBeforeInitialization,再到初始化bean,初始化完成后再去到postProcessAfterInitiazation中,最后给到调用者,注意方法中的两个参数Object bean 就为Spring创建的bean对象,而beanName为我们在标签中声明的id值
1.1 实战注意
在实战中,我们很少去处理Spring的初始化操作,所以没必要区分Before方法或者After方法,我们只需要在将bean给到调用者前,对bean进行包装就达到我们的目的,所以我们只需要实现一个After方法即可
但是我们需要注意的是,Before方法可以不做任何对bean的加工操作,但是必须return bean对象
二、实战步骤
第一步: 书写你的BeanPostProcessor 类继承 BeanPostProcessor 接口,并重写方法

public class MyBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        //如果这个方法内部没有对bean做任何处理,需要击鼓传花似地将bean返回
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof Catagory) {
            ((Catagory) bean).setName("Paul-Paul");
            ((Catagory) bean).setOrder(25);
        }
        return bean;
    }
}

第二步: 创建你的bean对象(由于过于简单,这里不展示了)
第三步:在配置文件中注入测试的bean和处理器bean



    
    




你可能感兴趣的:(后端springjava)