Spring BeanPostProcessor 使用场景

37 阅读1分钟

image.png

image.png

  • BeanPostProcessor 接口能够实现包括属性修改、代理包装、元数据处理等高级功能;
  • BeanPostProcessor 接口可以实现框架级别的功能增强而无需修改业务代码;

Bean 生命周期执行时序:

  1. 实例化Bean对象
  2. 属性注入(依赖注入)
  3. BeanPostProcessor 接口的 postProcessBeforeInitialization 方法
  4. 初始化方法(@PostConstruct -> InitializingBean -> init-method)
  5. BeanPostProcessor 接口的 postProcessAfterInitialization 方法

当存在多个BeanPostProcessor时,执行顺序遵循以下规则:

  • 实现PriorityOrdered接口的处理器优先执行(order值越小优先级越高)
  • 其次执行Ordered接口的实现类
  • 最后执行普通处理器
  • 相同order值的处理器按注册顺序执行

BeanPostProcessor 应用场景

  • 动态属性修改