<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>版本升级 on 吾爱主机</title><link>https://blog.waihost.com/tags/%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7/</link><description>Recent content in 版本升级 on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 29 Jun 2026 15:21:35 +0000</lastBuildDate><atom:link href="https://blog.waihost.com/tags/%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7/index.xml" rel="self" type="application/rss+xml"/><item><title>Spring Boot 3.5.16 发布后，团队现在该怎么做：升级、验证与 3.5 生命周期收尾指南</title><link>https://blog.waihost.com/posts/spring-boot-3-5-16-final-oss-guide/</link><pubDate>Mon, 29 Jun 2026 15:21:35 +0000</pubDate><guid>https://blog.waihost.com/posts/spring-boot-3-5-16-final-oss-guide/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/spring-boot-3-5-16-final-oss-guide.svg" alt="Featured image of post Spring Boot 3.5.16 发布后，团队现在该怎么做：升级、验证与 3.5 生命周期收尾指南" /&gt;&lt;p&gt;Spring 团队在 2026-06-25 发布了 &lt;strong&gt;Spring Boot 3.5.16&lt;/strong&gt;。如果你还在 3.5.x 线上维护窗口内，这个版本值得关注，因为它不仅是一个常规补丁版，还带着一个更重要的信号：&lt;strong&gt;3.5.x 已经来到开源维护周期的最后阶段&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这篇文章不重复官方公告，而是从工程落地角度整理成一份中文操作指南：这次版本到底变了什么、哪些团队应该马上升、升完要验证什么、以及如果你准备继续停留在 3.5 分支，应该怎样安排后续计划。&lt;/p&gt;
&lt;h2 id="一先说结论3516-是什么性质的版本"&gt;&lt;a href="#%e4%b8%80%e5%85%88%e8%af%b4%e7%bb%93%e8%ae%ba3516-%e6%98%af%e4%bb%80%e4%b9%88%e6%80%a7%e8%b4%a8%e7%9a%84%e7%89%88%e6%9c%ac" class="header-anchor"&gt;&lt;/a&gt;一、先说结论：3.5.16 是什么性质的版本
&lt;/h2&gt;&lt;p&gt;根据 Spring 官方博客，&lt;strong&gt;Spring Boot 3.5.16 已于 2026-06-25 发布&lt;/strong&gt;，本次发布包含 &lt;strong&gt;3 项依赖升级&lt;/strong&gt;。同时，官方明确说明它是 &lt;strong&gt;3.5.x 代际的最后一个 OSS 发布版本&lt;/strong&gt;，后续若需要更长周期支持，需要转向商业支持方案。&lt;/p&gt;
&lt;p&gt;结合 Spring Boot GitHub Release 与生命周期数据，可以把这个版本理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它是 &lt;strong&gt;3.5.x 的收官补丁版本&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;它不是一个新特性大版本，而是&lt;strong&gt;维护型版本&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;对仍在 3.5.x 的团队来说，它很适合作为该分支的&lt;strong&gt;最终稳定落点&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;如果你们还没有升级到 4.0/4.1，那么现在至少应先把 3.5.x 升到 3.5.16，再规划后续迁移。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="二这次实际更新了什么"&gt;&lt;a href="#%e4%ba%8c%e8%bf%99%e6%ac%a1%e5%ae%9e%e9%99%85%e6%9b%b4%e6%96%b0%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;二、这次实际更新了什么
&lt;/h2&gt;&lt;p&gt;从 Spring Boot 3.5.16 的 GitHub Release 页面可以确认，本次补丁版包含 3 个依赖升级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spring AMQP 3.2.12&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spring Data BOM 2025.0.13&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spring Integration 6.5.10&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这说明 3.5.16 的核心价值并不是引入新的框架行为，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对 3.5 代际已纳入管理的依赖做最后一轮维护性更新；&lt;/li&gt;
&lt;li&gt;尽量把生态内相关模块收敛到更稳定的补丁位；&lt;/li&gt;
&lt;li&gt;给仍在 3.5 线上运行的项目提供一个更明确的“最终补丁基线”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的应用显式或隐式使用了以下能力，建议优先升级并回归：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RabbitMQ / Spring AMQP 消息处理；&lt;/li&gt;
&lt;li&gt;Spring Data 相关持久层能力；&lt;/li&gt;
&lt;li&gt;Spring Integration 驱动的集成流、适配器或消息编排。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三为什么这个版本值得今天就处理"&gt;&lt;a href="#%e4%b8%89%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e4%b8%aa%e7%89%88%e6%9c%ac%e5%80%bc%e5%be%97%e4%bb%8a%e5%a4%a9%e5%b0%b1%e5%a4%84%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;三、为什么这个版本值得今天就处理
&lt;/h2&gt;&lt;p&gt;很多团队看到“只有 3 个依赖升级”时，容易觉得可以先放一放。但从维护节奏上看，&lt;strong&gt;这次比功能变化更重要的是支持窗口变化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;生命周期数据表明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spring Boot 3.5&lt;/strong&gt; 首次发布时间为 &lt;strong&gt;2025-05-31&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3.5.x 的 OSS 支持截止日期为 2026-06-30&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;商业支持可延长到 2032-06-30&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;截至校验时，&lt;strong&gt;3.5 分支最新版本就是 3.5.16（2026-06-25）&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着什么？&lt;/p&gt;
&lt;h3 id="1你还在-35x就应该把-3516-当成收官版看待"&gt;&lt;a href="#1%e4%bd%a0%e8%bf%98%e5%9c%a8-35x%e5%b0%b1%e5%ba%94%e8%af%a5%e6%8a%8a-3516-%e5%bd%93%e6%88%90%e6%94%b6%e5%ae%98%e7%89%88%e7%9c%8b%e5%be%85" class="header-anchor"&gt;&lt;/a&gt;1）你还在 3.5.x，就应该把 3.5.16 当成收官版看待
&lt;/h3&gt;&lt;p&gt;后续即便应用继续稳定运行，也不能再默认期待有新的公开补丁不断跟进。对生产团队来说，&lt;strong&gt;落在最后一个 OSS 补丁版本上&lt;/strong&gt;，比停留在更早的 3.5.x 小版本上更稳妥。&lt;/p&gt;
&lt;h3 id="2升级-3516-和规划下一跳是两件要并行做的事"&gt;&lt;a href="#2%e5%8d%87%e7%ba%a7-3516-%e5%92%8c%e8%a7%84%e5%88%92%e4%b8%8b%e4%b8%80%e8%b7%b3%e6%98%af%e4%b8%a4%e4%bb%b6%e8%a6%81%e5%b9%b6%e8%a1%8c%e5%81%9a%e7%9a%84%e4%ba%8b" class="header-anchor"&gt;&lt;/a&gt;2）升级 3.5.16 和规划下一跳，是两件要并行做的事
&lt;/h3&gt;&lt;p&gt;正确做法不是“反正马上要升 4.x，就不升 3.5.16 了”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;短期&lt;/strong&gt;：先把生产基线更新到 3.5.16；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中期&lt;/strong&gt;：评估是升到 &lt;strong&gt;4.0&lt;/strong&gt; 还是直接跟进 &lt;strong&gt;4.1&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长期&lt;/strong&gt;：决定是否需要商业支持兜底。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为 3.5.16 是补丁升级，风险通常远低于跨代升级。先完成这一步，可以降低你在迁移前的运行风险。&lt;/p&gt;
&lt;h2 id="四哪些项目应该优先升级"&gt;&lt;a href="#%e5%9b%9b%e5%93%aa%e4%ba%9b%e9%a1%b9%e7%9b%ae%e5%ba%94%e8%af%a5%e4%bc%98%e5%85%88%e5%8d%87%e7%ba%a7" class="header-anchor"&gt;&lt;/a&gt;四、哪些项目应该优先升级
&lt;/h2&gt;&lt;p&gt;下面几类项目，建议你优先安排升级窗口：&lt;/p&gt;
&lt;h3 id="1仍在长期维护的存量业务系统"&gt;&lt;a href="#1%e4%bb%8d%e5%9c%a8%e9%95%bf%e6%9c%9f%e7%bb%b4%e6%8a%a4%e7%9a%84%e5%ad%98%e9%87%8f%e4%b8%9a%e5%8a%a1%e7%b3%bb%e7%bb%9f" class="header-anchor"&gt;&lt;/a&gt;1）仍在长期维护的存量业务系统
&lt;/h3&gt;&lt;p&gt;如果系统没有立刻升级到 4.x 的资源，但还要持续运行几个月甚至更久，那么停在 3.5.16 是更合理的选择。&lt;/p&gt;
&lt;h3 id="2依赖-spring-data--spring-integration--amqp-的集成型系统"&gt;&lt;a href="#2%e4%be%9d%e8%b5%96-spring-data--spring-integration--amqp-%e7%9a%84%e9%9b%86%e6%88%90%e5%9e%8b%e7%b3%bb%e7%bb%9f" class="header-anchor"&gt;&lt;/a&gt;2）依赖 Spring Data / Spring Integration / AMQP 的集成型系统
&lt;/h3&gt;&lt;p&gt;这次补丁直接涉及这些依赖线，消息、数据访问、系统集成相关项目更应该完成回归验证。&lt;/p&gt;
&lt;h3 id="3准备做-35--4x-升级演练的团队"&gt;&lt;a href="#3%e5%87%86%e5%a4%87%e5%81%9a-35--4x-%e5%8d%87%e7%ba%a7%e6%bc%94%e7%bb%83%e7%9a%84%e5%9b%a2%e9%98%9f" class="header-anchor"&gt;&lt;/a&gt;3）准备做 3.5 → 4.x 升级演练的团队
&lt;/h3&gt;&lt;p&gt;先把 3.5 基线统一到 3.5.16，再做跨代升级，排障边界会更清晰。否则你很难分辨问题来自：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;旧的 3.5.x 补丁差异；&lt;/li&gt;
&lt;li&gt;还是 4.x 的行为变化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五怎么升级到-3516"&gt;&lt;a href="#%e4%ba%94%e6%80%8e%e4%b9%88%e5%8d%87%e7%ba%a7%e5%88%b0-3516" class="header-anchor"&gt;&lt;/a&gt;五、怎么升级到 3.5.16
&lt;/h2&gt;&lt;p&gt;大多数项目只需要改版本号，然后走一次标准构建与回归。&lt;/p&gt;
&lt;h3 id="maven"&gt;&lt;a href="#maven" class="header-anchor"&gt;&lt;/a&gt;Maven
&lt;/h3&gt;&lt;p&gt;如果你使用 &lt;code&gt;spring-boot-starter-parent&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&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="nt"&gt;&amp;lt;parent&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;org.springframework.boot&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;spring-boot-starter-parent&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;3.5.16&lt;span class="nt"&gt;&amp;lt;/version&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;relativePath/&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;/parent&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你使用 Spring Boot BOM：&lt;/p&gt;
&lt;div class="highlight"&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="nt"&gt;&amp;lt;dependencyManagement&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;dependencies&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;org.springframework.boot&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;spring-boot-dependencies&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;3.5.16&lt;span class="nt"&gt;&amp;lt;/version&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;type&amp;gt;&lt;/span&gt;pom&lt;span class="nt"&gt;&amp;lt;/type&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;scope&amp;gt;&lt;/span&gt;import&lt;span class="nt"&gt;&amp;lt;/scope&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;/dependencies&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;/dependencyManagement&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="gradle"&gt;&lt;a href="#gradle" class="header-anchor"&gt;&lt;/a&gt;Gradle
&lt;/h3&gt;&lt;p&gt;如果你通过 Spring Boot Gradle Plugin 管理版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;org.springframework.boot&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;3.5.16&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;io.spring.dependency-management&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1.1.7&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;kotlin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;jvm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2.2.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你的项目并不使用 Kotlin 或不需要显式声明这些插件版本，请按你们自己的构建脚本风格调整，核心是把 &lt;strong&gt;Spring Boot 版本对齐到 3.5.16&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="六升级后重点验证什么"&gt;&lt;a href="#%e5%85%ad%e5%8d%87%e7%ba%a7%e5%90%8e%e9%87%8d%e7%82%b9%e9%aa%8c%e8%af%81%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;六、升级后重点验证什么
&lt;/h2&gt;&lt;p&gt;虽然 3.5.16 本身是补丁版，但 3.5 这一代并不是完全没有行为约束变化。Spring Boot 3.5 Release Notes 中有几项很适合作为升级后的重点回归清单。&lt;/p&gt;
&lt;h3 id="1heapdump-端点默认访问策略变更"&gt;&lt;a href="#1heapdump-%e7%ab%af%e7%82%b9%e9%bb%98%e8%ae%a4%e8%ae%bf%e9%97%ae%e7%ad%96%e7%95%a5%e5%8f%98%e6%9b%b4" class="header-anchor"&gt;&lt;/a&gt;1）&lt;code&gt;heapdump&lt;/code&gt; 端点默认访问策略变更
&lt;/h3&gt;&lt;p&gt;在 3.5 代际中，&lt;code&gt;heapdump&lt;/code&gt; Actuator 端点默认变成了 &lt;code&gt;access=NONE&lt;/code&gt;。如果你们过去只做了暴露配置，没有显式设置访问策略，那么升级后相关诊断链路可能与旧行为不同。&lt;/p&gt;
&lt;p&gt;如果你确实需要启用它，应同时配置暴露与访问权限，例如：&lt;/p&gt;
&lt;div class="highlight"&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="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="l"&gt;heapdump&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;heapdump&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;access&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unrestricted&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建议你在测试环境确认：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点是否仍按预期可访问；&lt;/li&gt;
&lt;li&gt;安全配置是否仍符合内网/零信任策略；&lt;/li&gt;
&lt;li&gt;是否存在把高敏感诊断端点暴露到错误网络边界的风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2布尔型配置值解析更严格"&gt;&lt;a href="#2%e5%b8%83%e5%b0%94%e5%9e%8b%e9%85%8d%e7%bd%ae%e5%80%bc%e8%a7%a3%e6%9e%90%e6%9b%b4%e4%b8%a5%e6%a0%bc" class="header-anchor"&gt;&lt;/a&gt;2）布尔型配置值解析更严格
&lt;/h3&gt;&lt;p&gt;3.5 代际对 &lt;code&gt;.enabled&lt;/code&gt; 这类布尔配置的可接受值收紧为更一致的 &lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;。如果你的历史配置里混入了不规范值，升级后应检查是否产生行为变化。&lt;/p&gt;
&lt;p&gt;建议排查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;application.yml&lt;/code&gt; / &lt;code&gt;application.properties&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;环境变量注入后的映射值；&lt;/li&gt;
&lt;li&gt;Helm Chart / Kustomize / Ansible 模板里的布尔值渲染方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3profile-命名校验更严格但-351-起已部分放宽"&gt;&lt;a href="#3profile-%e5%91%bd%e5%90%8d%e6%a0%a1%e9%aa%8c%e6%9b%b4%e4%b8%a5%e6%a0%bc%e4%bd%86-351-%e8%b5%b7%e5%b7%b2%e9%83%a8%e5%88%86%e6%94%be%e5%ae%bd" class="header-anchor"&gt;&lt;/a&gt;3）Profile 命名校验更严格，但 3.5.1 起已部分放宽
&lt;/h3&gt;&lt;p&gt;Spring Boot 3.5 代际增强了 Profile 命名校验；官方 Release Notes 同时说明：&lt;strong&gt;从 3.5.1 开始，这些限制已部分放宽，额外允许 &lt;code&gt;.&lt;/code&gt;、&lt;code&gt;+&lt;/code&gt;、&lt;code&gt;@&lt;/code&gt; 字符&lt;/strong&gt;，也可以通过 &lt;code&gt;spring.profiles.validate=false&lt;/code&gt; 关闭校验。&lt;/p&gt;
&lt;p&gt;如果你们组织里有历史遗留 Profile 命名习惯，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prod-cn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gray@hz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;perf.test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议在升级后跑一次完整启动验证，确认 Profile 解析与加载顺序没有偏差。&lt;/p&gt;
&lt;h3 id="4按名称注入-taskexecutor-的代码需要留意"&gt;&lt;a href="#4%e6%8c%89%e5%90%8d%e7%a7%b0%e6%b3%a8%e5%85%a5-taskexecutor-%e7%9a%84%e4%bb%a3%e7%a0%81%e9%9c%80%e8%a6%81%e7%95%99%e6%84%8f" class="header-anchor"&gt;&lt;/a&gt;4）按名称注入 &lt;code&gt;taskExecutor&lt;/code&gt; 的代码需要留意
&lt;/h3&gt;&lt;p&gt;Spring Boot 3.5 Release Notes 明确指出：自动配置的 &lt;code&gt;TaskExecutor&lt;/code&gt; 不再同时提供 &lt;code&gt;taskExecutor&lt;/code&gt; 和 &lt;code&gt;applicationTaskExecutor&lt;/code&gt; 两个 Bean 名称，&lt;strong&gt;现在只提供 &lt;code&gt;applicationTaskExecutor&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你们代码里存在按名称获取执行器的写法，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@Qualifier(&amp;quot;taskExecutor&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;手动 &lt;code&gt;getBean(&amp;quot;taskExecutor&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;XML 或脚本化配置里写死旧名称&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那就要重点回归这部分逻辑。更稳妥的做法是改成依赖 &lt;code&gt;applicationTaskExecutor&lt;/code&gt;，避免在未来版本继续背兼容包袱。&lt;/p&gt;
&lt;h2 id="七升级前后的实操检查单"&gt;&lt;a href="#%e4%b8%83%e5%8d%87%e7%ba%a7%e5%89%8d%e5%90%8e%e7%9a%84%e5%ae%9e%e6%93%8d%e6%a3%80%e6%9f%a5%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;七、升级前后的实操检查单
&lt;/h2&gt;&lt;p&gt;为了让这次补丁升级更可控，可以按下面的顺序执行。&lt;/p&gt;
&lt;h3 id="升级前"&gt;&lt;a href="#%e5%8d%87%e7%ba%a7%e5%89%8d" class="header-anchor"&gt;&lt;/a&gt;升级前
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;锁定当前生产版本与构建产物；&lt;/li&gt;
&lt;li&gt;导出一份依赖树，确认是否显式覆盖了 Spring AMQP、Spring Data、Spring Integration 相关版本；&lt;/li&gt;
&lt;li&gt;识别所有依赖 &lt;code&gt;Actuator&lt;/code&gt;、&lt;code&gt;TaskExecutor&lt;/code&gt;、Profile、布尔配置开关的模块；&lt;/li&gt;
&lt;li&gt;准备至少一轮完整的自动化测试与一轮烟雾验证。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="升级中"&gt;&lt;a href="#%e5%8d%87%e7%ba%a7%e4%b8%ad" class="header-anchor"&gt;&lt;/a&gt;升级中
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;把 Spring Boot 版本提升到 &lt;strong&gt;3.5.16&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;执行依赖刷新；&lt;/li&gt;
&lt;li&gt;运行单元测试、集成测试、启动测试；&lt;/li&gt;
&lt;li&gt;对消息链路、数据库访问、接口调用、定时任务做重点验证。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="升级后"&gt;&lt;a href="#%e5%8d%87%e7%ba%a7%e5%90%8e" class="header-anchor"&gt;&lt;/a&gt;升级后
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;检查 &lt;code&gt;/actuator/health&lt;/code&gt;、&lt;code&gt;/actuator/info&lt;/code&gt; 以及你们自定义观测端点；&lt;/li&gt;
&lt;li&gt;检查日志里是否出现 Bean 注入名称变化、配置绑定失败、Profile 校验失败；&lt;/li&gt;
&lt;li&gt;观察消息积压、线程池使用率、慢 SQL、启动耗时；&lt;/li&gt;
&lt;li&gt;将 3.5.16 标记为 3.5 分支最终基线，并启动 4.x 升级计划。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="八现在是继续留在-35还是直接上-4x"&gt;&lt;a href="#%e5%85%ab%e7%8e%b0%e5%9c%a8%e6%98%af%e7%bb%a7%e7%bb%ad%e7%95%99%e5%9c%a8-35%e8%bf%98%e6%98%af%e7%9b%b4%e6%8e%a5%e4%b8%8a-4x" class="header-anchor"&gt;&lt;/a&gt;八、现在是继续留在 3.5，还是直接上 4.x？
&lt;/h2&gt;&lt;p&gt;截至核实时，Spring 官方项目页显示 &lt;strong&gt;Spring Boot 当前最新主线版本为 4.1.0&lt;/strong&gt;。因此从路线选择看，团队通常有三种策略：&lt;/p&gt;
&lt;h3 id="策略-a先稳定到-3516再规划-41"&gt;&lt;a href="#%e7%ad%96%e7%95%a5-a%e5%85%88%e7%a8%b3%e5%ae%9a%e5%88%b0-3516%e5%86%8d%e8%a7%84%e5%88%92-41" class="header-anchor"&gt;&lt;/a&gt;策略 A：先稳定到 3.5.16，再规划 4.1
&lt;/h3&gt;&lt;p&gt;适合：生产系统多、变更窗口谨慎、近期不适合跨代升级的团队。&lt;/p&gt;
&lt;p&gt;优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;风险最低；&lt;/li&gt;
&lt;li&gt;便于先完成一次补丁级基线收敛；&lt;/li&gt;
&lt;li&gt;给 4.x 迁移预留独立测试周期。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="策略-b在测试环境同时启动-3516-与-41-双线验证"&gt;&lt;a href="#%e7%ad%96%e7%95%a5-b%e5%9c%a8%e6%b5%8b%e8%af%95%e7%8e%af%e5%a2%83%e5%90%8c%e6%97%b6%e5%90%af%e5%8a%a8-3516-%e4%b8%8e-41-%e5%8f%8c%e7%ba%bf%e9%aa%8c%e8%af%81" class="header-anchor"&gt;&lt;/a&gt;策略 B：在测试环境同时启动 3.5.16 与 4.1 双线验证
&lt;/h3&gt;&lt;p&gt;适合：平台团队、公共框架团队、拥有较强自动化测试体系的组织。&lt;/p&gt;
&lt;p&gt;优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能同步评估短期稳定性与中期迁移成本；&lt;/li&gt;
&lt;li&gt;更早暴露跨代兼容性问题；&lt;/li&gt;
&lt;li&gt;有利于制定统一升级路线。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="策略-c如果必须长期停留-35评估商业支持"&gt;&lt;a href="#%e7%ad%96%e7%95%a5-c%e5%a6%82%e6%9e%9c%e5%bf%85%e9%a1%bb%e9%95%bf%e6%9c%9f%e5%81%9c%e7%95%99-35%e8%af%84%e4%bc%b0%e5%95%86%e4%b8%9a%e6%94%af%e6%8c%81" class="header-anchor"&gt;&lt;/a&gt;策略 C：如果必须长期停留 3.5，评估商业支持
&lt;/h3&gt;&lt;p&gt;适合：合规要求高、升级窗口长、系统耦合深的企业场景。&lt;/p&gt;
&lt;p&gt;因为官方已经明确 3.5.x 的 OSS 周期结束在即，所以“长期停留但不做支持兜底”会越来越被动。&lt;/p&gt;
&lt;h2 id="九给团队负责人的建议"&gt;&lt;a href="#%e4%b9%9d%e7%bb%99%e5%9b%a2%e9%98%9f%e8%b4%9f%e8%b4%a3%e4%ba%ba%e7%9a%84%e5%bb%ba%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;九、给团队负责人的建议
&lt;/h2&gt;&lt;p&gt;如果你是技术负责人、架构师或中台维护者，我更建议把这次发布当成一个&lt;strong&gt;版本治理节点&lt;/strong&gt;，而不是一次普通补丁升级。&lt;/p&gt;
&lt;p&gt;你可以在本周内完成三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;把所有 3.5.x 服务统一到 3.5.16&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拉出仍按名称依赖 &lt;code&gt;taskExecutor&lt;/code&gt;、依赖宽松布尔配置、依赖旧 profile 命名习惯的模块清单&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;明确 4.0 / 4.1 的迁移时间表与负责人&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样做的好处是，你不会在 3.5 OSS 窗口结束后，仍把版本决策停留在“以后再说”。&lt;/p&gt;
&lt;h2 id="十总结"&gt;&lt;a href="#%e5%8d%81%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;十、总结
&lt;/h2&gt;&lt;p&gt;Spring Boot 3.5.16 表面上只是一次小型维护发布，但它的意义并不小：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它是 &lt;strong&gt;Spring Boot 3.5.x 的最后一个 OSS 发布版本&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;它把 &lt;strong&gt;Spring AMQP 3.2.12、Spring Data BOM 2025.0.13、Spring Integration 6.5.10&lt;/strong&gt; 纳入最终补丁基线；&lt;/li&gt;
&lt;li&gt;它适合作为仍在 3.5 分支上的团队的&lt;strong&gt;最终稳定落点&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;它也在提醒你：&lt;strong&gt;该开始准备 4.x 了&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你今天只能做一件事，那就先把测试环境升到 &lt;strong&gt;3.5.16&lt;/strong&gt;，跑完关键回归，再安排生产发布窗口。对仍处在 3.5 生命周期尾段的系统来说，这是成本最低、收益最高的一步。&lt;/p&gt;</description></item></channel></rss>