<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>升级路径 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E5%8D%87%E7%BA%A7%E8%B7%AF%E5%BE%84/</link><description>Recent content in 升级路径 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 15 Dec 2024 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E5%8D%87%E7%BA%A7%E8%B7%AF%E5%BE%84/index.xml" rel="self" type="application/rss+xml"/><item><title>Spring Boot 与 JDK 版本演进：从 1.5 到 3.2 的二十年 Java 生态大事记</title><link>https://liangweidonggood.github.io/p/spring-boot-jdk-banben-yanjin/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/spring-boot-jdk-banben-yanjin/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/spring-boot-jdk-banben-yanjin/image/cover.jpg" alt="Featured image of post Spring Boot 与 JDK 版本演进：从 1.5 到 3.2 的二十年 Java 生态大事记" /&gt;&lt;p&gt;2024 年 12 月，Spring Boot 3.4 刚发布、JDK 21 LTS 满一年、JDK 17 LTS 满三年。回看过去 28 年（1996 JDK 1.0 - 2024 Spring Boot 3.4），Java 生态的版本节奏从&amp;quot;5 年一版 LTS&amp;quot;加速到&amp;quot;2 年一版 LTS&amp;quot;。&lt;strong&gt;对于一个 Java 团队来说，版本选型就是技术战略&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2024 年 12 月&lt;/strong&gt;——JDK 17 LTS 是当下主推、JDK 21 LTS 崭露头角，Spring Boot 3.3/3.4 是生产首选。下文的部分早期版本（JDK 8、JDK 11、Spring Boot 2.x）以&amp;quot;2024 视角回望&amp;quot;的方式呈现。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一jdk-版本演进时间线1996-2024"&gt;一、JDK 版本演进时间线（1996-2024）
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;版本&lt;/th&gt;
					&lt;th&gt;发布日期&lt;/th&gt;
					&lt;th&gt;关键特性&lt;/th&gt;
					&lt;th&gt;状态&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.0&lt;/td&gt;
					&lt;td&gt;1996-01-23&lt;/td&gt;
					&lt;td&gt;Java 起点&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.1&lt;/td&gt;
					&lt;td&gt;1997-02-19&lt;/td&gt;
					&lt;td&gt;内部类、反射、JavaBeans&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.2&lt;/td&gt;
					&lt;td&gt;1998-12-04&lt;/td&gt;
					&lt;td&gt;Collections 框架、JIT、Swing&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.3&lt;/td&gt;
					&lt;td&gt;2000-05-08&lt;/td&gt;
					&lt;td&gt;HotSpot JVM、JavaSound&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.4&lt;/td&gt;
					&lt;td&gt;2002-02-13&lt;/td&gt;
					&lt;td&gt;正则、NIO、日志、XML&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.5&lt;/td&gt;
					&lt;td&gt;2004-09-30&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;泛型、注解、枚举、并发包&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.6&lt;/td&gt;
					&lt;td&gt;2006-04&lt;/td&gt;
					&lt;td&gt;动态语言支持、HTTP Server API&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 1.7&lt;/td&gt;
					&lt;td&gt;2011-07-28&lt;/td&gt;
					&lt;td&gt;G1 回收器、try-with-resources、菱形语法&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JDK 1.8 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2014-03-18&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Lambda、Stream、Optional、Nashorn、移除 PermGen&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;当前生产主力&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 9.0&lt;/td&gt;
					&lt;td&gt;2017-09-21&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;模块系统（JPMS）、JShell、HTTP/2 Client&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 10.0&lt;/td&gt;
					&lt;td&gt;2018-03-21&lt;/td&gt;
					&lt;td&gt;局部变量类型推断 &lt;code&gt;var&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JDK 11 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2018-09-25&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;HttpClient、ZGC（实验）、Lambda var、移除 Java EE/CORBA&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;生产新主力&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 12.0&lt;/td&gt;
					&lt;td&gt;2019-03-19&lt;/td&gt;
					&lt;td&gt;Switch 表达式（预览）&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 13.0&lt;/td&gt;
					&lt;td&gt;2019-09-17&lt;/td&gt;
					&lt;td&gt;文本块（预览）&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 14.0&lt;/td&gt;
					&lt;td&gt;2020-03-17&lt;/td&gt;
					&lt;td&gt;Records（预览）、NPE 增强提示&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 15.0&lt;/td&gt;
					&lt;td&gt;2020-09-15&lt;/td&gt;
					&lt;td&gt;ZGC + 密封类（预览）&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 16.0&lt;/td&gt;
					&lt;td&gt;2021-03-16&lt;/td&gt;
					&lt;td&gt;Records 正式&lt;/td&gt;
					&lt;td&gt;已淘汰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;JDK 17 LTS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2021-09-15&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Sealed Classes 正式、Switch 模式匹配&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2024 当下生产主力&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;JDK 21 LTS&lt;/td&gt;
					&lt;td&gt;2023-09&lt;/td&gt;
					&lt;td&gt;虚拟线程正式&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2024 新晋 LTS&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="11-lts-节奏"&gt;1.1 LTS 节奏
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1.6 (2006) → 1.7 (2011)&lt;/strong&gt;：5 年&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1.7 (2011) → 1.8 (2014)&lt;/strong&gt;：3 年&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1.8 (2014) → 11 (2018)&lt;/strong&gt;：4 年（Oracle 改为&amp;quot;3 年一版 LTS&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;11 (2018) → 17 (2021)&lt;/strong&gt;：3 年&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;17 (2021) → 21 (2023)&lt;/strong&gt;：2 年（开始加速）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对企业选型的启示&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5-7 年一个 LTS 周期，意味着企业 JDK 升级周期约为 3-5 年&lt;/li&gt;
&lt;li&gt;选 LTS 版本长期维护，规避非 LTS 短期版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-jdk-8-的长寿原因"&gt;1.2 JDK 8 的&amp;quot;长寿&amp;quot;原因
&lt;/h3&gt;&lt;p&gt;JDK 8（2014-03-18 发布）到 2024 年 12 月已经 10 年，&lt;strong&gt;至今仍有一批存量系统在跑&lt;/strong&gt;（行业惯性 + 商业 JDK 8 商业支持仍在售）。原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lambda + Stream&lt;/strong&gt; 改变 Java 编程范式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optional + CompletableFuture&lt;/strong&gt; 提升函数式能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法引用 / 默认方法&lt;/strong&gt; 增强接口演进能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nashorn&lt;/strong&gt;（已废弃）首次带来 JVM 跑 JS 能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PermGen → Metaspace&lt;/strong&gt; 减少 OOM 痛点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;直到 JDK 11 出现，Java 生态才&amp;quot;集体升级&amp;quot;。&lt;strong&gt;2024 视角回望&lt;/strong&gt;：JDK 8 的&amp;quot;长寿&amp;quot;在 JDK 11 / JDK 17 之后才被真正打破——这也是 LTS 节奏从 5 年压缩到 2 年的拐点。&lt;/p&gt;
&lt;h3 id="13-jdk-11-的-5-大新特性"&gt;1.3 JDK 11 的 5 大新特性
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HTTP Client API 标准化&lt;/strong&gt;（孵化多版本后正式）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZGC 可用&lt;/strong&gt;（毫秒级 GC 暂停，4TB 堆支持）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lambda 参数 &lt;code&gt;var&lt;/code&gt;&lt;/strong&gt;（写 &lt;code&gt;(var x, var y) -&amp;gt; ...&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除 Java EE / CORBA&lt;/strong&gt;（瘦身 30%+）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;飞行记录器（JFR）开放&lt;/strong&gt;（生产可启用）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="二spring-boot-版本演进时间线2014-2024"&gt;二、Spring Boot 版本演进时间线（2014-2024）
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;版本&lt;/th&gt;
					&lt;th&gt;发布日期&lt;/th&gt;
					&lt;th&gt;关键特性&lt;/th&gt;
					&lt;th&gt;JDK 要求&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Spring Boot 1.0&lt;/td&gt;
					&lt;td&gt;2014-04&lt;/td&gt;
					&lt;td&gt;起步&lt;/td&gt;
					&lt;td&gt;JDK 6+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Spring Boot 1.2&lt;/td&gt;
					&lt;td&gt;2015-01&lt;/td&gt;
					&lt;td&gt;引入 starter 体系&lt;/td&gt;
					&lt;td&gt;JDK 6+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Spring Boot 1.3&lt;/td&gt;
					&lt;td&gt;2015-11&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;@SpringBootApplication&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;JDK 6+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Spring Boot 1.4&lt;/td&gt;
					&lt;td&gt;2016-04&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;@SpringBootTest&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;JDK 6+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Spring Boot 1.5&lt;/td&gt;
					&lt;td&gt;2017-01&lt;/td&gt;
					&lt;td&gt;Kafka/Actuator 完善&lt;/td&gt;
					&lt;td&gt;JDK 7+&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Spring Boot 2.0&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2018-03&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;WebFlux、Reactive、Java 8+&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;JDK 8+&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Spring Boot 2.1&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;2018-10&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;GraalVM（实验）、性能优化&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;JDK 8+&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="21-spring-boot-版本命名规则"&gt;2.1 Spring Boot 版本命名规则
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Alpha：不建议使用，主要是以实现软件功能为主，通常只在软件开发者内部交流，Bug 较多；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Beta：该版本相对于α版已有了很大的改进，消除了严重的错误，但还是存在着一些缺陷，需要经过多次测试来进一步消除；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GA：General Availability，正式版本，官方推荐使用此版本，在国外都是用GA来说明release版本；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;M：又叫里程碑版本，表示该版本较之前版本有功能上的重大更新；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PRE(不建议使用)：预览版，内部测试版，主要是给开发人员和测试人员测试和找BUG用的；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Release：最终版本，Release不会以单词形式出现在软件封面上，取而代之的是符号®；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RC：该版本已经相当成熟了，基本上不存在导致错误的BUG，与即将发行的正式版相差无几；
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SNAPSHOT：快照版，可以稳定使用，且仍在继续改进版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SR.X：修正版，服务版本，当项目发布积累到一定程度，需要修复该版本中的某个错误后以此来命名，X表示数字。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="22-截至-2024-12-的版本选择"&gt;2.2 截至 2024-12 的版本选择
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3.0.0(SNAPSHOT) 最少 java17 （未发布）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.7.5(SNAPSHOT) 最少 java8 （生产）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.6.13(SNAPSHOT) 最少 java8 （生产）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;生产推荐&lt;/strong&gt;（2024 视角）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;保守派&lt;/strong&gt;：Spring Boot 3.3 + JDK 17（LTS 长期维护组合）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;激进派&lt;/strong&gt;：Spring Boot 3.4 + JDK 21（虚拟线程 + 模式匹配）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存量维护&lt;/strong&gt;：Spring Boot 2.7（已于 2023-11 停止 OSS 支持，仅商业支持）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-spring-boot-26--27-关键变化"&gt;2.3 Spring Boot 2.6 → 2.7 关键变化
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;2.6（2021-11）默认禁止循环引用&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# application.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spring&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;allow-circular-references&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 2.6 之前隐式允许，2.6+ 默认禁止&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2.7（2022-05）核心新特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@AutoConfiguration&lt;/code&gt; 注解（替换过时的注册方式）&lt;/li&gt;
&lt;li&gt;GraphQL 支持&lt;/li&gt;
&lt;li&gt;Podman 支持（替代 Docker）&lt;/li&gt;
&lt;li&gt;RabbitStreamTemplate 支持&lt;/li&gt;
&lt;li&gt;Hazelcast 支持&lt;/li&gt;
&lt;li&gt;Cache2k 支持&lt;/li&gt;
&lt;li&gt;Web Server SSL 增强&lt;/li&gt;
&lt;li&gt;Info 端点增强&lt;/li&gt;
&lt;li&gt;单元测试加强&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三版本选型实战建议2024-年时点"&gt;三、版本选型实战建议（2024 年时点）
&lt;/h2&gt;&lt;h3 id="31-新项目起步"&gt;3.1 新项目起步
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;JDK&lt;/th&gt;
					&lt;th&gt;Spring Boot&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;企业内部管理系统&lt;/td&gt;
					&lt;td&gt;17&lt;/td&gt;
					&lt;td&gt;3.3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;互联网电商&lt;/td&gt;
					&lt;td&gt;21（虚拟线程）&lt;/td&gt;
					&lt;td&gt;3.4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;金融/政府强合规&lt;/td&gt;
					&lt;td&gt;17（合规）&lt;/td&gt;
					&lt;td&gt;3.2（稳定）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;IoT 边缘计算&lt;/td&gt;
					&lt;td&gt;21&lt;/td&gt;
					&lt;td&gt;3.4&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="32-升级路径"&gt;3.2 升级路径
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;JDK 8 → JDK 11 升级清单&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 升级构建工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mvn -version &lt;span class="c1"&gt;# 确认 Maven 3.5+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 升级依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;dependency&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt; &amp;lt;!-- 移除 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/dependency&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!-- 替换为 --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;dependency&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;groupId&amp;gt;jakarta.xml.bind&amp;lt;/groupId&amp;gt; &amp;lt;!-- JDK 11+ --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;artifactId&amp;gt;jakarta.xml.bind-api&amp;lt;/artifactId&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;version&amp;gt;2.3.3&amp;lt;/version&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/dependency&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 升级 IDE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# IntelliJ IDEA 2018.3+ 支持 JDK 11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. 升级框架&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;parent&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;version&amp;gt;2.1.0.RELEASE&amp;lt;/version&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/parent&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Spring Boot 1.5 → 2.1 升级清单&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- javax → jakarta 替换 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;javax.servlet&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;javax.servlet-api&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 替换为 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;javax.servlet&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;javax.servlet-api&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;4.0.1&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;&amp;lt;!-- 升级到 4.0+ 支持 Jakarta EE --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- Tomcat 8 → 9 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- Hibernate 5 → 6 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- Thymeleaf 3 → 4 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="33-监控升级"&gt;3.3 监控升级
&lt;/h3&gt;&lt;p&gt;升级后必做的几件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;JVM 启动参数对比&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# JDK 8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;JAVA_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-Xms4g -Xmx4g -XX:PermSize=512m -XX:MaxPermSize=512m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# JDK 11+（PermGen 已被移除）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;JAVA_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;GC 切换&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# JDK 8 默认&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-XX:+UseParallelGC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# JDK 11 推荐（低延迟）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-XX:+UseG1GC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-XX:MaxGCPauseMillis&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# JDK 11 试验（超低延迟）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-XX:+UseZGC
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;监控接入&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Spring Boot 2.1 Actuator&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;management&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;endpoints&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;web&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;exposure&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;health&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;show-details&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四写在最后"&gt;四、写在最后
&lt;/h2&gt;&lt;p&gt;2024 年这个时点，Java 生态已经历了&amp;quot;JDK 17 → JDK 21&amp;quot;、&amp;ldquo;Spring Boot 2.x → 3.x&amp;quot;两轮大升级。&lt;strong&gt;对于一个想保持竞争力的 Java 团队&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;保守策略&lt;/strong&gt;：JDK 17 + Spring Boot 3.3 → 2025 评估 JDK 21 升级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;激进策略&lt;/strong&gt;：JDK 21 + Spring Boot 3.4（2024 当下就用，吃虚拟线程红利）&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;个人建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024 年新项目：&lt;strong&gt;直接用 JDK 21 + Spring Boot 3.4&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;已有项目升级：&lt;strong&gt;以 JDK 17 + Spring Boot 3.3 为目标版本，2025 上半年完成&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;长期规划：&lt;strong&gt;2026 年底前完成所有项目 JDK 21 升级&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;/blockquote&gt;
&lt;h2 id="五2024-视角回望-2018"&gt;五、2024 视角回望 2018
&lt;/h2&gt;&lt;p&gt;站在 2024 年 12 月回望 2018 年 12 月那篇文章的选型判断，&lt;strong&gt;6 年时间 Java 生态的演进有三条主线&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;LTS 节奏真正加速&lt;/strong&gt;：2018 年还是&amp;quot;3 年一版 LTS&amp;quot;的预期，2024 年看是&amp;quot;2 年一版 LTS&amp;rdquo;（17→19→21）。企业升级窗口期被进一步压缩&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spring Boot 2.6/2.7 完成了 1.x → 2.x 最后的过渡&lt;/strong&gt;：默认禁止循环引用（2.6）、&lt;code&gt;@AutoConfiguration&lt;/code&gt; 注解（2.7）都是为 3.0 破坏性升级铺路&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GraalVM 从实验变实战&lt;/strong&gt;：2018 年 Spring Boot 2.1 提&amp;quot;GraalVM 实验&amp;quot;，到 2024 年 Spring Boot 3.x + GraalVM Native Image 已成云原生部署标配&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JDK 8 的&amp;quot;超长服役&amp;quot;被打破&lt;/strong&gt;：2024 年新项目几乎默认 JDK 17+，&amp;ldquo;用 JDK 8 起步&amp;quot;已是历史&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/spring-projects/spring-boot/releases" target="_blank" rel="noopener"
 &gt;Spring Boot 官方发布说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://spring.io/projects/spring-boot#learn" target="_blank" rel="noopener"
 &gt;Spring Boot 学习&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.oracle.com/java/technologies/javase/8all-relnotes.html" target="_blank" rel="noopener"
 &gt;Oracle JDK 8 发布说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://openjdk.java.net/projects/jdk/11/" target="_blank" rel="noopener"
 &gt;OpenJDK 11 发布说明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>