BeanPostProcessor后置处理器

本文深入解析Spring框架中BeanPostProcessor的原理及其在bean生命周期中的作用,通过实例演示如何利用该后置处理器对特定bean进行增强。

什么是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 Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof Test5){
            System.out.println("1........." + bean + beanName);
        }
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object 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被初始化前后被进行了增强。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值