《Spring Boot 入门》4.3 条件装配与开关
逐个讲透 @ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty、@ConditionalOnWebApplication、@ConditionalOnBean 等条件注解,每类配一个最小可运行示例,并说明评估顺序的坑与如何用条件装配实现「按配置开关功能」。
tag
逐个讲透 @ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty、@ConditionalOnWebApplication、@ConditionalOnBean 等条件注解,每类配一个最小可运行示例,并说明评估顺序的坑与如何用条件装配实现「按配置开关功能」。
顺着 @EnableAutoConfiguration 一路追到 AutoConfigurationImportSelector 与 AutoConfiguration.imports 清单文件,讲清 3.x/4.x 的加载路径、4.0 模块化后包名的迁移规律,并用 --debug 打印的自动配置报告解读 Positive/Negative matches。
从「我什么都没配,Tomcat 怎么就起来了」这个疑问出发,逐层拆开 @SpringBootApplication 背后的三个注解:@SpringBootConfiguration、@EnableAutoConfiguration 与 @ComponentScan,用等价代码验证,并给出包扫描与 exclude 的常见误用与排查方法。
用 mvn package 把 demo 打成可执行 jar,拆解 BOOT-INF/classes、BOOT-INF/lib 与 JarLauncher 的内部结构,讲清 4.0 移除可执行 jar 启动脚本、4.1 用 tools 取代 layertools 两条变更,并说明分层 jar 与 Docker 镜像的关系。
对比传统 war 部署与内嵌 Tomcat,拆解 SpringApplication.run() 的环境准备、容器创建、Bean 加载与服务器启动四步,逐行解读 4.1.1 真实启动日志,并给出端口占用、Bean 创建失败、依赖缺失三类常见启动问题的日志特征与排查方法。
在 demo 项目里写出第一个 REST 接口:用 @RestController 与 @GetMapping 暴露 /hello,对比返回字符串与返回对象自动 JSON 序列化的差别,掌握 @RequestParam 与 @PathVariable 两种取参方式,并用 curl 完成一次真实的请求与响应验证。
本节读懂 demo 项目:给出标准 Maven 目录树并解释各目录职责,逐行拆解启动类与 @SpringBootApplication、SpringApplication.run;重点讲包扫描规则,说明启动类为何必须放根包;再讲 application.properties 与 yml 的位置与优先级、.gitignore 建议,以及两种运行方式的差别。
本节讲清如何用 start.spring.io 生成项目骨架:逐字段说明表单怎么填,强调 4.x 中 Spring Web 对应 spring-boot-starter-webmvc;给出等价的 curl 命令行方式,逐段解读生成的 pom.xml,并用表格对比 3.x 与 4.x 生成物在 parent 版本与 starter 名上的差异。
本节搭建 Spring Boot 开发环境:说明为何锁定 Java 21 LTS,给出 macOS、Linux、Windows 三种 shell 下安装 JDK 与配置 JAVA_HOME 的写法,附 java -version 与 mvn -v 实测输出;再配置 ~/.m2/settings.xml 国内镜像加速,并汇总版本不匹配、JAVA_HOME 未生效、拉包慢等常见故障的排查方法。
本节把 3.5.x 与 4.1.x 两条版本线摆到同一张表上逐项对照,从 Spring Framework、Jackson、Servlet、Tomcat 到测试注解的差异一次讲清,并给出新项目、存量项目、受监管行业三类团队的决策树,附本机 JDK 21 + Maven 3.9.12 的双线构建与启动实测数据,以及本套书主线 4.1 的阅读方法。
本节围绕 Spring Boot 4.x 的破坏性变更展开:从 4.0 的模块化重构讲起,用本机 4.1.1 与 3.5.16 的真实启动日志对比包名变化,给出 Starter 改名表、Jackson 3 迁移要点与 Servlet 6.1 基线,再列出 4.1 的 gRPC、API Versioning 等新增能力,最后判断 4.x 适合谁用、什么场景该等一等。
本节以一支准备把老系统重构为 Spring Boot 的团队为引子,先用真实的 web.xml 与 applicationContext.xml 展示传统 Spring 的配置负担,再拆解 Spring Boot 的三条核心主张——约定优于配置、起步依赖、内嵌容器,讲清它解决了什么、没解决什么,并梳理 Spring 生态的分工。读完你能判断一个项目该不该上 Boot。
《Spring Boot 入门》全 61 篇,是一套面向 Java 开发者的 Spring Boot 4.1 系统教材:从定位与版本选择、环境搭建讲起,依次覆盖自动配置、依赖注入、配置管理、Starter 机制,再到 MVC 与 REST、数据校验、错误处理、拦截器,随后是 JPA 数据访问、事务与 Flyway 迁移,最后落到日志、测试与一个完整项目。本页给出全书分章目录。
《Spring Boot 入门》全书导航页:说明本书定位、读者画像与前置知识、三条学习路径与五个部分之间的依赖关系,并按五个部分列出 18 章 54 节的完整章节索引,另含序、前言、附录 A–D 与常见问题速查表,每一节都配一句话说明,方便按需定位、跳读与随时查阅全书。
《Spring Boot 入门》前言:交代本书的版本口径(主线 4.1.1 / Spring Framework 7.0.9 / Java 21.0.12.1,对照线 3.5.16)、starter 术语约定、全书结构与三种阅读路径,并说明代码与环境约定、示例的真实性保证,以及发现问题时该如何提交勘误与反馈。
《Spring Boot 入门》的序。从 Spring Boot 今天在 Java 生态中的位置谈起,说明本站既有的 92 篇 Java 与 Java 企业级开发专题做的是「单点深挖」、这套书补的是「从零到能上手」的递进路径,并交代 4.x 破坏性变更带来的影响、面向的读者,以及一个诚实的阅读预期。
深入解析 Spring Boot 3 自动装配源码、条件注解、自定义 Starter 构建、Actuator 监控、外部化配置与 GraalVM 原生镜像支持,从原理到生产实践。
Spring Kafka 配置、@KafkaListener、并发消费者、事务与错误处理
Lettuce vs Jedis、Spring Data Redis Template、Cache 注解与连接池配置
Spring Data MongoDB: Repository、MongoTemplate、聚合查询、事务与监听的完整实践