Spring如何控制Bean加载+执行顺序

1. @Order 注解和 Ordered 接口
  • 用途:控制组件执行顺序或排序,但不控制Bean初始化顺序。
  • 定义执行顺序:通过整数值指定组件优先级,数值越小优先级越高。
  • 集合排序:影响自动装配到集合中的组件排列顺序。
  • 使用场景
    • 拦截器排序:控制Spring MVC拦截器执行顺序。
    • Spring Security Filters:定义Spring Security过滤器链顺序。
    • 事件监听器:控制多个监听同一事件的监听器触发顺序。
    • Bean集合注入:确保特定类型的Bean集合按指定顺序注入。
2. Bean加载顺序控制
  • @Order 注解限制:不直接影响Bean创建和初始化过程,由Spring IoC容器基于依赖关系和配置决定。
3. 设置Bean加载顺序的方法
  • @DependsOn 注解

    • 指示Spring容器在初始化一个Bean前,先初始化其依赖的其他Bean。
    • 解决Bean间依赖关系,确保依赖Bean准备就绪。
    • 可应用于配置类、服务类、数据访问对象等。
  • BeanFactoryPostProcessor

    • 执行时机早于正常Bean初始化。
    • 可用于提前初始化特定Bean。
    • postProcessBeanFactory方法中手动调用getBean实现。
4. 小结
  • 确保多个相同类型Bean执行顺序 :使用@Order注解或Ordered接口。
  • 调整Bean加载顺序
    • 通过@DependsOn注解加载。
    • BeanFactoryPostProcessor#postProcessBeanFactory中提前调用getBean方法初始化Bean。
相关推荐
xiaobaoyu5 分钟前
ssm
后端
Nick_zcy7 分钟前
小说在线阅读网站和小说管理系统 · 功能全解析
java·后端·python·springboot·ruoyi
源码宝9 分钟前
基于 SpringBoot + Vue 的医院随访系统:技术架构与功能实现
java·vue.js·spring boot·架构·源码·随访系统·随访管理
王中阳Go18 分钟前
2026年了,还在纠结后端转AI要不要死磕Python?试试Go吧
后端·go·ai编程
用户83562907805129 分钟前
用 Python 轻松在 Excel 工作表中应用条件格式
后端·python
red1giant_star34 分钟前
Python根据文件后缀统计文件大小、找出文件位置(仿Everything)
后端·python
长大198840 分钟前
每秒10万写入的订单系统:MySQL分库分表、缓冲设计、批量写入优化实战
后端
渐儿1 小时前
缓存一致性与分布式锁:工程踩坑全解
后端
长大19881 小时前
为什么我加了索引,查询反而更慢了?
后端
阿聪谈架构1 小时前
第08章:MCP 模型上下文协议(下)
人工智能·后端