美文网首页
理解 SpringBoot2.X - BeanPostProce

理解 SpringBoot2.X - BeanPostProce

作者: 聆世冷暖 | 来源:发表于2018-08-20 19:42 被阅读0次

    一.前言

    暂时还没发现应用场景。
    BeanPostProcessor接口是 Bean 的后置处理器,主要是在 bean 初始化前后进行一些处理工作。

    二.BeanPostProcessor 接口分析

    实现BeanPostProcessor接口之后需要 Override 两个方法(原接口的default方法):
    1.postProcessBeforeInitialization:初始化之前做一些初始化工作;
    2.postProcessAfterInitialization:初始化之后做一些工作。

    屏幕快照 2018-08-20 下午7.36.33.png

    两个方法入口参数第一个为 bean 实例,第二个为这个 bean 的名称。
    两个方法均返回 Object 对象,这个对象就是入口参数的 bean 实例。
    Spring 框架会遍历得到容器中所有的 BeanPostProcessor ,挨个执行 postProcessBeforeInitialization 当返回的 bean 为 null 时,跳出 for 循环,不会执行后面的 BeanPostProcessor.postProcessBeforeInitialization。

    屏幕快照 2018-08-20 下午7.36.53.png

    三.自定义 BeanPostProcessor

    首先继承 BeanPostProcessor 接口

    // 将后置处理器加入到容器
    @Component
    public class MyBeanPostProcessor implements BeanPostProcessor {
    
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("postProcessBeforeInitialization...." + beanName + "=>" + bean);
            return bean;
        }
    
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("postProcessAfterInitialization...." + beanName + "=>" + bean);
            return bean;
        }
    }
    
    

    四.Spring 底层对 BeanPostProcessor 的使用

    applicationcontext可以在bean定义中自动检测BeanPostProcessor bean,并将它们应用于随后创建的任何bean。普通bean工厂允许对后处理器进行编程注册,应用于通过该工厂创建的所有bean。
    通常,通过标记接口或类似方式填充bean的后处理器将实现{postprocessbeforeinitialize},而使用代理包装bean的后处理器通常实现{postprocessafterinitialize}。


    image.png image.png

    五.代码路径

    https://github.com/shaopro/SpringBootBeanPostProcessor

    相关文章

      网友评论

          本文标题:理解 SpringBoot2.X - BeanPostProce

          本文链接:https://www.haomeiwen.com/subject/bwtriftx.html