首页 >文档 > spring boot 启动类加载顺序 加载哪些内容

spring boot 启动类加载顺序 加载哪些内容

2025年最新Java面试宝典重磅发布,内含Spring Boot高频考点深度解析!掌握Spring Boot启动类加载顺序与加载内容是面试成功的关键,本文详细拆解六大加载阶段:环境准备、上下文初始化、自动配置触发、Bean实例化、监听器启动和容器就绪。深入剖析配置加载顺序、核心注解执行顺序和自动配置黑名单机制,助你轻松应对"如何控制Bean加载顺序"、"自定义Starter注意事项"等高频面试题。通过面试鸭返利网获取完整面试题库,还可享受25元返利优惠,快速提升Java面试通过率!

2025年Java面试宝典点击获取 (含Spring Boot高频考点)

Spring Boot启动类加载顺序与加载内容解析

很多同学在面试中被问到"Spring Boot启动类加载顺序是怎样的"都会懵圈。其实这道题考察的是对Spring Boot底层原理的理解,我们只需要抓住加载触发点、配置优先级、组件初始化这三个维度就能给出高分答案。作为在面试鸭返利网刷过500+真题的老司机,我来给大家拆解这个高频考点。

Spring Boot启动流程图

启动类的核心作用

当执行main()方法时,SpringApplication.run()会触发以下关键流程:

  1. 加载默认配置文件(application.properties/yml)
  2. 初始化Spring应用上下文
  3. 执行自动配置类
  4. 启动内嵌Servlet容器
  5. 注册Shutdown Hook

这个过程就像搭积木,底层框架先准备好基础模块,再按需装配开发者定义的组件。注意这里有个常见陷阱:Bean的加载顺序不由@Order注解决定,而是受声明顺序和依赖关系影响

六大加载阶段详解

  1. 环境准备阶段

    • 读取JVM参数
    • 加载Profile配置
    • 初始化Banner(就是启动时那个LOGO)
  2. 上下文初始化

    • 创建BeanFactory
    • 加载主配置类(@SpringBootApplication标注的类)
    • 注册Bean定义
  3. 自动配置触发

    • 扫描所有jar包的META-INF/spring.factories
    • 按条件装配配置类(@Conditional系列注解在此生效)
    • 过滤重复配置
  4. Bean实例化

    • 优先初始化配置类Bean
    • 处理@Autowired依赖
    • 执行@PostConstruct方法
  5. 监听器启动

    • ApplicationRunner
    • CommandLineRunner
    • 自定义监听器
  6. 容器就绪

    • 启动Tomcat/Undertow等Web容器
    • 注册DispatcherServlet
    • 发布ApplicationReadyEvent事件

组件加载顺序图

必须掌握的加载内容

  1. 配置加载顺序(优先级由高到低):

    • 命令行参数
    • JNDI属性
    • 操作系统环境变量
    • application-{profile}.properties
    • @PropertySource注解指定配置
  2. 核心注解执行顺序: @Configuration > @ComponentScan > @EnableAutoConfiguration > @Conditional

  3. 自动配置黑名单机制: 在application.properties中添加spring.autoconfigure.exclude=com.example.SomeAutoConfiguration可以禁用指定自动配置类

需要特别注意的是,Web应用的Filter和Interceptor的加载顺序与声明顺序相反,这是很多同学实际开发中容易踩坑的地方。如果遇到Bean循环依赖问题,推荐使用setter注入代替构造器注入。

高频面试题破解

Q:如何控制Bean的加载顺序? A:推荐三种解决方案:

  1. 使用@DependsOn明确依赖关系
  2. 通过实现PriorityOrdered/Ordered接口
  3. 分批次配置(@Configuration的嵌套使用)

Q:自定义Starter要注意什么? A:需要重点考虑:

  • spring.factories文件书写规范
  • 条件注解的正确使用
  • 自动配置类的保护机制(@ConditionalOnMissingBean)

面试准备技巧

准备面试时,建议大家多关注启动过程中的扩展点设计,比如ApplicationContextInitializer和BeanFactoryPostProcessor的区别。如果通过面试鸭返利网购买会员,可以找我返利25元,相当于用更低成本获取最新的面试题库。

理解启动原理不仅为了面试,更能帮助我们在实际项目中:

  • 优化应用启动速度
  • 合理设计模块依赖
  • 精准定位启动异常
  • 实现灵活的功能开关

建议大家结合官方文档和源码中的SpringApplication.run()方法,亲自走一遍启动流程的调试,这对掌握启动机制会有质的提升。

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)

面试鸭返利网客服-面试鸭返利网

面试鸭小程序码

面试鸭小程序码 - 面试鸭返利网

美团大额优惠券,给自己加个鸡腿吧!

美团大额优惠券,给自己加个鸡腿吧!

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码