Skip to content

Spring Boot 面试题

本页只放 Spring Boot 面试标准回答、项目话术、常见追问和知识点跳转。自动配置、启动流程、Starter、配置绑定、内嵌 Tomcat 等底层原理统一放到对应知识点页学习。

使用方式

mermaid
flowchart TD
    A["面试页:先背会怎么答"] --> B["知识点页:再理解为什么"]
    B --> C["回到项目:说清怎么落地"]

高频问题

面试题标准回答原理知识点
怎么判断 Spring Boot 是否真正学懂不能只会背 @SpringBootApplication 和写 Controller。真正学懂要能讲清启动流程、配置加载、自动配置、Starter、条件注解、内嵌 Tomcat、Web 请求链路、扩展点、Actuator、生产排查和商业 Starter 落地,并能用 Demo 证明。Spring Boot 从零到精通验收清单
Spring Boot 怎么从零学到生产级不能只会写 Controller。要按启动类、SpringApplication.run、Starter、自动配置、配置体系、内嵌 Tomcat、请求链路、统一异常参数校验、扩展点、Actuator、部署和线上排查这条主线学习。Spring Boot 从零到生产级掌握
Spring Boot 和 Spring 有什么区别Spring 提供 IOC、AOP、事务、MVC 等基础能力;Spring Boot 是基于 Spring 的工程化增强,核心是自动配置、Starter、内嵌服务器和约定优于配置,让项目更快启动和落地。Spring Boot 从零到生产级掌握Spring Boot总览Spring IOC
为什么Boot 3最低要求Java 17Boot 3基于Spring Framework 6,而Spring 6把Java 17作为运行基线;这是class版本和框架依赖的硬约束,不是建议项。Java 8或11 JVM无法加载Boot 3依赖的Java 17字节码。Java 17+与Boot 3:Java基线
Boot 2.7和Boot 3核心区别Boot 3基于Spring 6和Java 17,迁移到Jakarta命名空间,并演进了自动配置注册、可观测性、AOT及生态依赖。升级必须同时核对Servlet容器、Validation、Persistence、Security、Cloud、Starter和Agent。Java 17+与Boot 3:核心变化
javax改成jakarta为什么不只是换importJVM按完全限定类名识别类型,javax.servlet.Filterjakarta.servlet.Filter是不同类型;第三方Jar字节码仍会引用旧类型,因此必须升级或重新编译整个依赖链。Jakarta迁移原理
Boot 2迁Boot 3怎样降低风险先补契约测试并站到Boot 2.7基线,再让2.7运行于Java 17,把JDK变化与框架变化拆开;随后升级Boot、Cloud和Jakarta兼容组件,做集成、性能、故障与灰度验证,并保留可执行回滚。Boot 3迁移流程
@SpringBootApplication 是什么它是组合注解,通常可以理解为 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 的组合,分别负责配置类、自动配置和组件扫描。启动原理Spring IOC
自动配置原理是什么Spring Boot 通过 @EnableAutoConfiguration 导入 AutoConfigurationImportSelector,启动时读取候选自动配置类。Boot 2.6及更早常见spring.factories;Boot 2.7已支持并推荐AutoConfiguration.imports;Boot 3使用imports机制。候选类再经条件判断注册BeanDefinition,最终由Spring IOC创建Bean。自动配置原理版本边界
自动配置为什么不是魔法因为它不是运行时乱猜,而是候选配置类 + 条件注解 + BeanDefinition + IOC 生命周期。依赖在 classpath 中、配置项满足、容器缺少用户 Bean 时,默认配置才生效。自动配置原理Spring核心扩展点
自动配置完整流程怎么讲SpringApplication.run 开始,先准备 Environment,再创建 ApplicationContext,解析 @SpringBootApplication,通过 @EnableAutoConfiguration 导入 AutoConfigurationImportSelector,读取候选自动配置类,处理排除、去重、排序,再由条件注解决定是否注册 BeanDefinition,最后在 refresh() 阶段创建 Bean。自动配置与扩展点全过程
条件注解什么时候判断条件注解可能在配置类解析和 BeanDefinition 注册阶段判断。类级条件决定整个自动配置类是否参与解析,方法级条件决定某个 @Bean 是否注册。条件主要依赖 classpath、Environment、已有 BeanDefinition、Web 应用类型和资源。自动配置原理:条件注解到底什么时候判断
@ConditionalOnClass 为什么能优雅跳过缺依赖Boot 会尽量基于注解元数据和 classpath 判断类是否存在,而不是直接初始化缺失类。公共 starter 常用 @ConditionalOnClassname 写法,避免业务项目没引入某依赖时启动直接报 ClassNotFoundException自动配置原理:ConditionalOnClass
@ConditionalOnMissingBean 有什么坑它判断的是当前容器中已经存在的 BeanDefinition 或 Bean,不是预知未来所有 Bean。自定义 starter 要让用户配置优先,默认 Bean 加 @ConditionalOnMissingBean,不要过早 getBean(),必要时用自动配置排序保证判断依据稳定。自动配置原理:MissingBean时机坑
Spring Boot 自动配置怎么落到项目可以把公共能力拆成 SDK、autoconfigure、starter。SDK 放纯客户端,autoconfigure 放配置属性、自动配置类、条件注解、HealthIndicator、指标和 FailureAnalyzer,starter 只聚合依赖。业务项目引入 starter 后,Boot 读取自动配置清单,条件匹配就创建默认 Bean,用户也可以通过自定义 Bean 覆盖默认实现。Spring Boot商业场景训练营
Boot 2 和 Boot 3 自动配置声明区别Boot 2.6及更早常见spring.factories;Boot 2.7已经支持并推荐AutoConfiguration.imports且兼容旧方式;Boot 3移除了通过旧EnableAutoConfiguration key注册候选类的方式。不能扩大为“Boot 3完全不使用spring.factories”。自动配置版本边界
为什么自定义 Bean 后默认配置会失效很多自动配置使用 @ConditionalOnMissingBean,表示容器里没有用户自定义 Bean 时才创建默认 Bean。用户自己声明 Bean 后,Boot 默认实现会让位。Starter机制Spring IOC
Starter 是什么Starter 是场景化依赖入口,通常聚合 SDK 和 autoconfigure;autoconfigure 提供属性类、条件和默认 Bean。业务应用引入依赖后,Boot 从版本对应声明文件发现候选配置,条件满足才注册 BeanDefinition,最后由 Spring 容器创建 Bean。Starter机制:五个概念Starter全过程原理
Starter 和自动配置什么关系Starter 主要负责依赖入口,自动配置负责真正装配 Bean。starter 把 SDK 和 autoconfigure 带进 classpath,Spring Boot 再通过 spring.factoriesAutoConfiguration.imports 发现自动配置类,经过条件注解判断后把默认 Bean 注册到容器。Starter全过程原理:开箱即用全过程自动配置原理
为什么要拆 starter 和 autoconfigurestarter 最好只做依赖聚合,autoconfigure 放自动配置类、属性类、条件类和默认 Bean。这样职责清楚,自动配置逻辑可以单独测试,SDK 也可以独立复用,避免 starter 模块变成大杂烩。Starter全过程原理:模块边界
自定义 Starter 要注意什么Starter 要拆清 starter 和 autoconfigure 边界,用 @ConfigurationProperties 管配置,用 @ConditionalOnClass 判断依赖是否存在,用 @ConditionalOnProperty 提供开关,用 @ConditionalOnMissingBean 尊重用户自定义,不能把具体业务规则强塞进公共 Starter。Starter全过程原理自动配置原理
Starter 没生效怎么排查先用 dependency tree 确认运行时依赖,再检查 autoconfigure Jar 中是否存在版本对应的声明文件;然后在 conditions 报告搜索目标配置类,判断未成为候选、被 exclude 还是条件不匹配;Positive match 后继续检查配置绑定、构造异常和用户 Bean 是否触发默认让位。Starter机制:证据化排查Starter全过程原理
conditions 报告怎么看先在报告里搜索目标自动配置类;没有出现就查 starter 依赖和声明文件;出现但在 Negative matches 就看缺依赖、配置项、Web 类型或资源;Positive matches 但 Bean 没出来就看 @ConditionalOnMissingBean 是否让位、配置绑定是否失败、Bean 创建是否异常。自动配置原理:conditions报告怎么看
Spring Boot 启动流程Spring Boot 启动从 SpringApplication.run 开始,先创建 SpringApplication,推断应用类型,加载初始化器和监听器,然后准备 Environment、读取配置和 Profile,再根据应用类型创建 ApplicationContext。之后解析启动类、组件扫描和自动配置,把 BeanDefinition 注册到容器,执行 refresh() 创建非懒加载单例 Bean。Servlet Web 应用会在刷新过程中创建并启动内嵌 Tomcat,最后发布启动完成事件并执行 Runner。启动流程全过程原理启动原理
Spring Boot 一次 HTTP 请求怎么走请求先进入内嵌 Tomcat,再经过 Filter 链,到 DispatcherServlet,由 HandlerMapping 找到 Controller,执行参数解析和校验,进入 Controller、Service、Mapper 或 Repository,访问数据库、Redis、MQ 等下游,最后通过消息转换器序列化成 JSON 返回。Spring Boot 从零到生产级掌握
Spring Boot 常见扩展点有哪些启动早期可以用 EnvironmentPostProcessor,容器刷新前用 ApplicationContextInitializer,Bean 阶段用 Spring 后置处理器,启动完成后用 ApplicationRunner,Web 链路用 Filter、Interceptor、ArgumentResolver,监控用 HealthIndicator 和 Micrometer,失败诊断用 FailureAnalyzer。Spring Boot扩展点
扩展点怎么选先判断要干预哪个生命周期阶段:配置读取前用 EnvironmentPostProcessor,动态注册 BeanDefinition 用 BeanDefinitionRegistryPostProcessor,修改 Bean 定义用 BeanFactoryPostProcessor,Bean 初始化增强用 BeanPostProcessor,启动完成预热用 Runner,请求链路用 Filter/Interceptor/ArgumentResolver,监控诊断用 HealthIndicator/MeterBinder/FailureAnalyzer。自动配置与扩展点全过程Spring Boot扩展点
BeanDefinitionRegistryPostProcessor 和 BeanFactoryPostProcessor 区别BeanDefinitionRegistryPostProcessor 更早,主要用于新增、删除、批量注册 BeanDefinition,例如 Mapper、Feign Client、客户端代理;BeanFactoryPostProcessor 主要修改已经注册好的 BeanDefinition。两者都不应该提前获取业务 Bean。Spring Boot扩展点Spring核心扩展点
ImportBeanDefinitionRegistrar 做什么它通常配合 @Import 或自定义 @EnableXxx 注解,根据注解元数据或扫描结果编程式注册 BeanDefinition。它适合框架集成,不适合普通业务代码炫技使用。Spring Boot扩展点
扩展点选错为什么会出问题因为 Spring Boot 启动是分阶段的。越早的扩展点能改配置和 BeanDefinition,但不能访问业务 Bean;越晚的扩展点能拿到完整 Bean,但自动配置条件、配置绑定和 Bean 创建可能已经结束。比如配置解密放到 Runner 就太晚,BeanFactoryPostProcessor 里 getBean 可能导致 Bean 过早创建,绕开 AOP 和事务代理。扩展点选错为什么会出问题
SmartLifecycle 适合什么场景SmartLifecycle 适合管理长期运行组件的启动和停止顺序,例如消息消费者、采集调度器、长连接客户端。它可以通过 phase 控制先后顺序,并在应用关闭时优雅停止。不要在构造方法或 @PostConstruct 里随便启动后台线程,否则依赖可能未就绪,关闭也不可控。SmartLifecycle
ResponseBodyAdvice 做什么ResponseBodyAdvice 在 Controller 返回对象之后、消息转换器写响应之前执行,适合做统一响应包装、补充 traceId 等协议层增强。它不适合写业务判断,并且要排除文件下载、字符串响应、已包装结果等特殊场景,避免误包装。ResponseBodyAdvice
FailureAnalyzer 和 ExitCodeGenerator 区别FailureAnalyzer 面向人,把启动异常翻译成清晰原因和修复建议;ExitCodeGenerator 面向脚本、容器和 CI/CD,用退出码表达失败类型。自定义 Starter 可以二者配合,既让开发者看懂缺什么配置,也让平台识别启动失败原因。FailureAnalyzerExitCodeGenerator
Readiness 和 Liveness 有什么区别Liveness 表示进程是否还活着,常用于判断是否需要重启;Readiness 表示应用是否准备好接流量,常用于 K8s Service 是否转发流量。应用启动但字典、连接池、消息订阅、外部依赖还没准备好时,Liveness 可以是可用,Readiness 应该暂时不可用。AvailabilityState
自动配置排序是不是 Bean 创建顺序不是。@AutoConfigureBefore@AutoConfigureAfter 主要影响自动配置类解析和 BeanDefinition 注册顺序,最终 Bean 创建还受依赖关系、懒加载、@DependsOn、条件注解和 BeanPostProcessor 影响。自动配置原理
自动配置没生效怎么排查先打开 debug=true/actuator/conditions,确认自动配置类是否在候选列表,再看是否被 exclude、条件是否匹配、classpath 是否缺依赖、配置项是否写错、是否已有用户 Bean、Bean 创建或配置绑定是否异常。自动配置与扩展点全过程
refresh() 为什么重要refresh() 是 Spring 容器真正启动的核心阶段,会准备 BeanFactory、执行 BeanFactoryPostProcessor、注册 BeanPostProcessor、初始化事件广播器、创建非懒加载单例 Bean。AOP、事务、生命周期回调、自动配置 Bean 的创建都离不开这个阶段。启动流程全过程原理:refreshSpring Bean生命周期
内嵌 Tomcat 什么时候启动Servlet Web 应用会创建 ServletWebServerApplicationContext,它在 refresh()onRefresh() 阶段调用 createWebServer(),通过 ServletWebServerFactory 创建 Tomcat,注册 Servlet、Filter、Listener,最后绑定端口并开始接收请求。启动流程全过程原理:内嵌Tomcat启动原理
Spring Boot 配置体系是什么Spring Boot 配置体系是把端口、数据库、Redis、第三方接口、线程池、日志级别等环境差异从代码中抽离出来。启动时 Boot 会加载多个配置源到 Environment,再通过 Binder 绑定到 @ConfigurationProperties 对象,供自动配置和业务 Bean 使用。配置体系全过程原理配置体系
配置文件优先级怎么理解Spring Boot 会从配置文件、Profile、环境变量、JVM 参数、命令行参数、配置中心等多个来源加载属性。一般越外部、越临时、越明确指定的配置优先级越高。线上排查时不能只看文件值,要看最终 Environment 中生效的值以及来源。配置体系全过程原理:优先级
@Value@ConfigurationProperties 怎么选少量简单值可用 @Value;一组有前缀、有嵌套、有类型转换、有校验需求的配置,应该用 @ConfigurationProperties。商业项目里的客户端、线程池、上传、限流、外部接口配置更推荐配置属性类。配置体系全过程原理
Profile 有什么用Profile 用来区分不同环境配置。公共配置放 application.yml,环境差异放 application-dev.ymlapplication-prod.yml 等,通过 spring.profiles.active 激活。这样同一份代码可以在开发、测试、生产使用不同参数。配置体系全过程原理:Profile
配置为什么能绑定到对象Spring Boot 会把配置源合并到 Environment,然后 Binder 根据 @ConfigurationProperties 的 prefix 找到相关属性,进行宽松名称匹配、类型转换、对象填充和校验,最终把配置类注册为 Bean。配置体系全过程原理:Binder
配置不生效怎么排查先看 active profile,再看配置源是否加载,检查环境变量、命令行参数、配置中心是否覆盖本地文件;然后看属性名是否写对、类型是否能转换、配置类是否注册;最后用 /actuator/env/actuator/configprops/actuator/conditions 定位最终值、绑定结果和自动配置条件。配置体系全过程原理:排查
Filter 和 Interceptor 区别Filter 属于 Servlet 规范,在 DispatcherServlet 前执行,不知道具体 Controller;Interceptor 属于 Spring MVC,在 HandlerMapping 后、Controller 前后执行,能拿到 handler 信息。traceId、底层过滤适合 Filter,权限、审计、接口日志常用 Interceptor。Spring Boot扩展点
Runner 适合做什么ApplicationRunnerCommandLineRunner 在容器启动完成后执行,适合做轻量缓存预热、启动检查、注册状态等。不能放不可控长任务,否则会拖慢启动甚至导致启动失败。启动流程全过程原理:RunnerSpring Boot扩展点
Actuator 怎么扩展可以通过 HealthIndicator 增加自定义健康检查,通过 Micrometer 注册业务指标,通过 Endpoint 暴露运维信息。生产环境要控制端点暴露和权限。Spring Boot扩展点Actuator监控
Spring Boot 项目怎么分层Web 层负责 HTTP 协议、格式校验和响应转换;Application Service 负责用例编排、事务和幂等入口;Domain 表达业务不变量;Repository/Mapper 负责持久化;Client/Gateway 隔离外部协议。分层的目的不是增加目录,而是隔离 HTTP、业务、数据库和第三方变化。Web工程:分层边界
DTO、Entity、Domain、VO 为什么不能全部共用请求 DTO 是外部输入合约,Entity 对应持久化结构,Domain 表达业务规则,Response/VO 是外部输出合约。全部共用会产生越权赋值、敏感字段泄露、懒加载序列化问题,并让 API 与库表强耦合。Web工程:模型边界
参数校验通过是否代表业务合法不代表。@Valid 主要验证非空、长度、格式、金额范围等结构约束;商品是否存在、订单状态能否变化属于业务校验;requestId 唯一、库存不能为负等并发不变量还要靠数据库唯一约束或原子机制兜底。Web工程:请求校验
为什么事务通常放在 Service 层Service 通常表达一个完整用例,能覆盖多个数据操作,又不会把 JSON 解析和响应序列化包含进事务。@Transactional 由代理开启和提交或回滚事务,要注意自调用、异常回滚规则以及本地事务不能自动控制远程 HTTP、Redis 和普通 MQ。Web工程:事务边界Spring事务全过程
创建订单怎样保证幂等客户端为同一次操作提供稳定 requestId,服务端将其与用户或租户绑定,数据库建立唯一约束作为并发最终防线;相同 requestId 重试时返回第一次结果。只做先查后写存在并发窗口,Redis 锁也不能替代数据库唯一约束。Web工程:创建接口幂等
数据库成功但 MQ 发送失败怎么办不能把数据库和普通 MQ 当成一个本地事务。可将订单与 Outbox 事件在同一数据库事务写入,再由投递器重试发送,或者使用中间件事务消息。投递确认与状态更新之间仍可能重复,因此消费者也必须按事件 ID 幂等。Web工程:数据库与消息一致性分布式事务
统一异常和统一返回为什么重要全局异常处理将参数、业务、下游和未知异常转换成稳定 HTTP 状态与业务错误码,让客户端、网关和监控正确理解结果;内部日志保留 traceId 和堆栈,外部响应不泄露 SQL、类名和敏感信息。不能把所有错误都包装成 HTTP 200。Web工程:统一错误全局异常处理
traceId 为什么要在 finally 中清理Tomcat 工作线程会被线程池复用,MDC 基于线程上下文保存 traceId;请求结束后不清理,下一个请求复用同一线程时可能继承旧 traceId,造成日志串号。Web工程:traceId与日志
下游调用为什么必须有超时,重试有什么风险无超时会让 Tomcat 线程和连接池持续等待,最终入口线程耗尽并形成级联故障。重试只能用于可重试、幂等的短暂失败,并限制次数、退避和总预算;创建订单、扣款等请求盲目重试可能重复执行。Web工程:超时与重试
Actuator 有什么用Actuator 是 Spring Boot 的生产可观测和运维端点体系,用来暴露健康检查、指标、环境配置、配置绑定、自动配置条件、线程栈和日志级别等信息。它常用于 K8s 探针、Prometheus 监控、自动配置排查和线上诊断。生产环境必须控制暴露端点和访问权限。Actuator监控
Liveness 和 Readiness 有什么区别Liveness 表示进程是否还活着,失败时平台通常重启容器;Readiness 表示应用是否准备好接收流量,失败时平台应该摘除流量但不一定重启。数据库短暂不可用通常影响 Readiness,而不一定影响 Liveness,否则可能导致容器反复重启。Actuator监控:Health、Liveness、Readiness
Spring Boot部署到Docker要关注什么不只是把Jar放进JRE镜像,还要验证JDK/Boot版本、非root用户、JVM cgroup资源识别、Heap外预算、配置与Secret、端口监听、Actuator探针、stdout日志、Dump挂载、PID 1信号和优雅停机。Spring Boot容器化运行原理
Actuator 怎么接 Prometheus引入 spring-boot-starter-actuatormicrometer-registry-prometheus,开放 /actuator/prometheus 端点,Prometheus 定时拉取指标并存成时间序列,Grafana 基于 Prometheus 展示看板和告警。业务指标用 Micrometer 的 Counter、Timer、Gauge 注册。Actuator监控:Prometheus 和 Grafana
自定义业务指标要注意什么用 Counter 记录只增计数,例如采集成功数;用 Timer 记录接口或下游耗时;用 Gauge 记录队列长度、连接数等瞬时值。指标 tag 只能放低基数字段,例如系统、状态、接口类型,不能放用户 ID、订单号、患者 ID,否则时间序列爆炸,监控系统压力会很大。Actuator监控:Micrometer 指标体系
Actuator 有哪些安全风险/env/configprops/beans/heapdump/threaddump 可能暴露配置、Token、类结构、内存数据和调用栈。生产环境只暴露 health、info、metrics、prometheus 等必要端点,管理端口走内网,敏感端点必须鉴权,health 细节不要直接对公网展示。Actuator监控:安全边界
Spring Boot 线上接口慢怎么排查先用 traceId 定位请求日志,确认慢在应用、数据库、Redis、MQ 还是下游接口;再看线程池、连接池、GC、慢 SQL、锁等待、Actuator 指标和线程栈。不要只看 Controller,要沿请求链路逐层定位。Spring Boot 从零到生产级掌握Actuator监控

项目话术

text
在医疗数据采集平台里,Spring Boot 主要负责快速搭建服务、加载多环境配置、启动内嵌 Tomcat、自动装配 Web、数据源、Redis、监控等基础能力。比如医院接口地址、采集开关、线程池参数会放在配置体系里;服务启动后通过 Actuator 暴露健康检查,便于网关、K8s 或监控系统判断实例是否可用。

常见追问

追问回答方向跳转
自动配置为什么不是魔法说明候选自动配置类、条件注解、BeanDefinition、IOC 创建和默认 Bean 让位机制。自动配置原理
Starter 为什么能开箱即用说明 starter 聚合依赖,autoconfigure 提供自动配置,条件注解决定是否生效,配置属性承载外部配置,@ConditionalOnMissingBean 让用户可接管。自动配置与扩展点全过程Starter机制
为什么有些自动配置没生效debug=true/actuator/conditions 看条件报告,检查候选类是否加载、是否被 exclude、依赖是否存在、配置项是否满足、是否已有用户 Bean。自动配置原理
配置解密应该放在哪里如果要在自动配置读取前生效,适合 EnvironmentPostProcessor;如果放到业务 Service,很多配置绑定和条件判断已经执行完了。Spring Boot扩展点
当前登录用户参数怎么优雅注入 Controller可以用 HandlerMethodArgumentResolver,统一从 Header、Token 或上下文解析用户信息,避免每个接口重复解析。Spring Boot扩展点
为什么配置不要写死在代码里说明多环境部署、密钥安全、动态调整和配置中心。配置体系
启动慢怎么排查先看日志卡在哪个阶段,再区分是配置中心、Bean 创建、WebServer 启动还是 Runner 执行。重点检查构造器、@PostConstruct、初始化方法、数据源连接、外部 HTTP 调用、配置中心、端口占用和启动后预热任务。可以配合 debug=true、Actuator startup、线程栈和耗时日志定位。启动流程全过程原理:启动慢排查Actuator监控
事务为什么写在 Service 层说明业务边界、AOP 代理、连接和回滚规则。Spring事务

面试回答模板

text
Spring Boot 我会从工程化和扩展机制角度回答。Spring 提供 IOC、AOP、事务这些基础能力,Boot 通过 Starter 和自动配置把常用场景封装成默认能力。自动配置不是魔法,而是 @EnableAutoConfiguration 导入候选配置类,再通过条件注解决定是否注册默认 Bean,最终仍由 Spring IOC 创建 Bean。项目里我会把公共客户端、线程池、健康检查、指标、配置绑定沉淀成 Starter,并通过 @ConditionalOnMissingBean 尊重业务自定义。

深度验收跳转

如果面试官继续追问“你说的这些到底怎么发生”,不要在本页死背长答案,直接回到 Spring Boot 从零到精通验收清单 按阶段复盘:

  • 启动流程:从 main 方法到端口监听成功。
  • 自动配置:候选类、Boot 2/Boot 3 声明差异、条件注解、BeanDefinition、IOC 创建。
  • 配置体系:PropertySource、Environment、Binder、Profile、优先级和 Actuator 排查。
  • 扩展点:配置解密、动态注册 Bean、Bean 增强、启动后预热、健康检查、指标、失败诊断。
  • 商业落地:医疗采集客户端 Starter、统一 Web 能力、线上接口慢排查。

本章小结

Spring Boot 面试页负责整理“怎么答”。自动配置为什么生效、配置为什么能绑定、Starter 为什么能开箱即用、内嵌 Tomcat 为什么能启动,都要跳到知识点页看原理、流程图、Demo 和排查方式。