- BeanPostProcessor 接口能够实现包括属性修改、代理包装、元数据处理等高级功能;
- BeanPostProcessor 接口可以实现框架级别的功能增强而无需修改业务代码;
Bean 生命周期执行时序:
- 实例化Bean对象
- 属性注入(依赖注入)
- BeanPostProcessor 接口的
postProcessBeforeInitialization
方法 - 初始化方法(@PostConstruct -> InitializingBean -> init-method)
- BeanPostProcessor 接口的
postProcessAfterInitialization
方法
当存在多个BeanPostProcessor时,执行顺序遵循以下规则:
- 实现PriorityOrdered接口的处理器优先执行(order值越小优先级越高)
- 其次执行Ordered接口的实现类
- 最后执行普通处理器
- 相同order值的处理器按注册顺序执行
BeanPostProcessor 应用场景
- 动态属性修改