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。

相关推荐

  1. Spring如何控制Bean+执行顺序

    2024-07-11 19:16:06       22 阅读
  2. Spring的@Bean通过配置文件实现控制???

    2024-07-11 19:16:06       40 阅读
  3. spring-boot控制bean的创建顺序

    2024-07-11 19:16:06       33 阅读
  4. Spring容器Bean和JVM

    2024-07-11 19:16:06       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 19:16:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 19:16:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 19:16:06       57 阅读
  4. Python语言-面向对象

    2024-07-11 19:16:06       68 阅读

热门阅读

  1. futures.toArray(new CompletableFuture[0])

    2024-07-11 19:16:06       22 阅读
  2. 远程Linux机器图形化界面使用及音频转发

    2024-07-11 19:16:06       25 阅读
  3. 【React Hooks原理 - useReducer】

    2024-07-11 19:16:06       20 阅读
  4. 2024.7.10 刷题总结

    2024-07-11 19:16:06       26 阅读
  5. 什么是逻辑运算中的短路效应?

    2024-07-11 19:16:06       23 阅读
  6. 开发指南043-自定义注解

    2024-07-11 19:16:06       24 阅读
  7. C语言 比较两个字符串

    2024-07-11 19:16:06       20 阅读
  8. Andt Desgin Vue Pro 项目添加前缀访问解决

    2024-07-11 19:16:06       17 阅读
  9. MDA协议

    2024-07-11 19:16:06       23 阅读