什么是BeanPostProcessor

BeanPostProcessor是spring中的后置处理器,spring中的bean的生命周期分为:创建,初始化,销毁。其中,在bean创建,属性赋值之后,会进行bean的初始化操作,而在初始化的前后会通过BeanPostProcessor进行前置和后置增强操作,通过源码分析可知:
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);

    }

}
结果

BeanPostProcessor后置处理器
测试可得出,在Test5被初始化前后被进行了增强。

相关文章:

  • 2022-02-28
  • 2019-03-03
  • 2021-08-13
  • 2021-06-11
  • 2021-04-09
  • 2021-09-21
  • 2019-03-03
猜你喜欢
  • 2021-07-15
  • 2021-07-04
  • 2021-11-06
  • 2021-09-03
  • 2021-10-23
  • 2021-10-28
  • 2022-12-23
相关资源
相似解决方案