先问一句:你能说清 @SpringBootApplication 背后发生了什么吗
很多人用 Spring Boot 写了两年接口,能熟练加依赖、配 yml、写 Controller,但一旦被问到「自动配置类是怎么被选中的」「条件注解什么时候生效」「自己写的 Starter 为什么在别人项目里不生效」,就只能含糊过去。这种状态在业务稳定期没问题,等到要排查启动慢、Bean 冲突、配置不生效、依赖版本打架的时候,就会卡住。
这门课面向的就是这个缺口:不是教你再用一遍 Spring Boot,而是把已经会用的东西拆开,看它在容器里到底怎么跑起来的。
它补的是哪几块能力
Spring Boot 的「会用」和「懂」之间,隔着几层东西,这门课基本是围着这几层来的。
- 启动流程与容器刷新。从 SpringApplication 的构造、run 方法的执行顺序,到 Environment 准备、BeanDefinition 加载、容器 refresh 的各个扩展点。搞清楚这条线,你才知道自己的 ApplicationRunner、BeanPostProcessor 是在哪一步被调到的。
- 自动配置的装配机制。配置类是怎么被收集的、@Conditional 家族(@ConditionalOnClass、@ConditionalOnMissingBean 等)的判断依据是什么、加载顺序和覆盖关系怎么定。这是「为什么引入了依赖就自动生效」的答案。
- 配置绑定与外部化配置。@ConfigurationProperties 的绑定过程、松散绑定规则、多环境配置的优先级、命令行参数与配置文件的覆盖顺序。线上配置不生效,十有八九出在这里。
- Spring Boot 与 Spring 的关系。哪些是 Boot 加的,哪些本来就是 Spring 的能力。分清楚这层,才不会把所有问题都归到「Boot 的坑」上。
看完应该能回答的问题
判断自己有没有学进去,不看笔记记了多少,看能不能回答下面这些具体问题:
- 启动时 @SpringBootApplication 展开后一共包含哪几个注解,各自负责什么?
- 自动配置类是通过什么机制被读取的,为什么它可以用 @ConditionalOnMissingBean 让你的自定义 Bean 顶掉默认的?
- 同一个配置项同时出现在 application.yml、application-dev.yml、环境变量和命令行参数里,最终生效的是哪个,依据是什么?
- 自己写一个 Starter,需要哪些组成部分,为什么很多人的 Starter 在别人项目里不生效?
- 启动报 Bean 冲突或者循环依赖时,从哪几个点入手定位?
如果这些问题里有三四个你答不利索,那这门课的定位就适合你。
怎么用这份材料
只看不练,原理课最容易变成「听的时候都懂,用的时候全忘」。建议按这个节奏走:先跟着内容把启动流程和自动配置的主线过一遍,形成整体印象;然后打开自己手上任意一个 Spring Boot 项目,把启动日志逐行读一遍,对照课里讲的阶段去找对应的输出;再动手写一个最简单的自定义 Starter,哪怕只是包装一个工具类,跑通「引入依赖即生效」的完整链路。
每学完一块,回到上面那组问题自测一次。答不上来的部分,就是下一轮要重点看的。
这门课不适合零基础第一次接触 Spring Boot 的人——至少得写过一个能跑的 Web 项目,知道 Controller、Service、Bean 是什么,否则听起来会像在背名词。它更适合已经用过一段时间、想从「照着文档配」过渡到「知道为什么这么配」的人。
黑马博学谷 - Spring Boot 2原理深入解析
Spring Boot核心技术深度剖析
编辑点评
深入浅出解析Spring Boot原理,助你掌握核心框架。
⭐ 编辑推荐
掌握Spring Boot核心技术,提升后端开发能力。
课程深入解析Spring Boot原理,涵盖核心框架、配置原理、自动配置等。
课程亮点
适合人群
- Java后端开发者
- Spring Boot初学者
- 有志于提升后端开发能力者
学习收获
祝您学习愉快!
学有所成,前程似锦!





![大疆维修,无人机维修教程[66.30GB]](/_next/image?url=https%3A%2F%2Fwww.itzhibei.com%2Fapi%2Fuploads%2Fb6a69810-862f-479c-a529-d66880073ebc.jpg&w=1920&q=75)
