首页 > 编程语言 > 详细

Spring后置处理器BeanPostProcessor

时间:2021-04-26 10:43:54      阅读:24      评论:0      收藏:0      [点我收藏+]
  • 什么是BeanPostProcessor

    • 是Spring IOC容器给我们提供的一个扩展接口
    • 在调用初始化方法前后对bean进行额外加工,ApplicationContext会自动扫描实现了BeanPostProcessor的bean,并注册这些bean为后置处理器
    • 是bean的统一前置后置处理而不是基于某一个bean
  • 执行顺序

    Spring IOC容器实例化bean
    调用BeanPostProcessor的postProcessBeforeInitialization方法
    调用bean实例的初始化方法
    调用BeanPostProcessor的postProcessAfterInitialization方法
    
  • 代码示例如下,注意:接口重写的两个方法不能返回null,如果返回null那么在后续初始化方法将报空指针异常或者通过getBean()方法获取不到bean实例对象

    package com.gen;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.core.Ordered;
    import org.springframework.stereotype.Component;
    
    @Component
    public class CustomBeanPostProcessor implements BeanPostProcessor, Ordered {
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("before---------------------" + beanName);
            return bean;
        }
    
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("after---------------------" + beanName);
            return bean;
        }
    
        @Override
        public int getOrder() {
            return 1;
        }
    }
    
  • 可以注册多个BeanPostProcessor顺序

    • 在Spring机制中可以指定后置处理器调用顺序,通过BeanPostProcessor接口实现Ordered接口getOrder方法,该方法返回整数,默认为0优先级最高,值越大优先级越低

Spring后置处理器BeanPostProcessor

原文:https://www.cnblogs.com/Gen2021/p/14703003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!