什么是BeanPostProcessor

BeanPostProcessor是spring中的后置处理器,spring中的bean的生命周期分为:创建,初始化,销毁。其中,在bean创建,属性赋值之后,会进行bean的初始化操作,而在初始化的前后会通过BeanPostProcessor进行前置和后置增强操作,通过源码分析可知:
\"在这里插入图片描述\"
在bean的初始化前后确实是通过后置处理器来增强的,而且在spring中的aop实现中,其实增强也是在这里进行的,只是前置处理在aop中是创建相应的bean的,而真正做增强业务的是在后置处理中。

使用BeanPostProcessor

搞清楚了BeanPostProcessor的作用,我们也可以在日常开发中来使用它,目的就是通过BeanPostProcessor在IOC容器加载我们的bean,初始化bean的前后进行对某些指定bean进行增强。

需求

对容器中Test5这个bean进行增强

实现类
@Component
public class Test6 implements BeanPostProcessor {
    @Override
    public   postProcessBeforeInitialization(  bean, String beanName) throws BeansException {
        if (bean instanceof Test5){
            System.out.println(\"1.........\" + bean + beanName);
        }
        return bean;
    }

    @Override
    public   postProcessAfterInitialization(  bean, String beanName) throws BeansException {
        if (bean instanceof Test5){
            System.out.println(\"2.........\" + bean + beanName);
        }
        return bean;
    }
}
测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DemoApplicationTests {

    @Autowired
    private BeanFactory beanFactory;

    @Test
    public void contextLoads() {
        Test6 bean =  beanFactory.getBean(Test6.class);
        System.out.println(bean);

    }

}
结果

\"在这里插入图片描述\"
测试可得出,在Test5被初始化前后被进行了增强。

收藏 打印