【问题标题】:Is it safe to upgrade Spring to latest patch version?将 Spring 升级到最新补丁版本是否安全?
【发布时间】:2020-02-02 15:09:21
【问题描述】:
【问题讨论】:
-
-
是的其中一些。例如,Spring Security 4.2.4 没有发行说明,只有git tag 4.2.4。对于版本4.2.5,有一个正式版本,作为发行说明,github link
-
谢谢@dur。而已。我还没有阅读 Spring Framework BOM 并且知道发布编号。所以在我的例子中,Spring Security 4.2.13 是针对 4.3.23.RELEASE 构建的。欢迎回答我的问题。
标签:
java
spring
spring-security
【解决方案1】:
补丁版本兼容,见Spring Security Reference:
2.3 版本编号
了解 Spring Security 版本号的工作原理很有用,因为它将帮助您确定迁移到项目未来版本所涉及的工作量(或缺乏工作量)。每个版本都使用标准的整数三元组:MAJOR.MINOR.PATCH。其目的是 MAJOR 版本是不兼容的 API 的大规模升级。 MINOR 版本应该在很大程度上保留与旧次要版本的源代码和二进制兼容性,因为可能存在一些设计更改和不兼容的更新。 PATCH 级别应该完全兼容,向前和向后兼容,可能的例外是为了修复错误和缺陷而进行的更改。
您受更改影响的程度将取决于您的代码的集成程度。与使用简单的命名空间配置相比,如果您进行大量自定义,则更有可能受到影响。
在推出新版本之前,您应该始终彻底测试您的应用程序。
要处理您的 Spring Framework 依赖项,您可以使用 Spring Framework BOM,请参阅Spring Security Reference:
Spring 框架组件
Spring Security 针对 Spring Framework 4.3.9.RELEASE 构建,但应该适用于 4.0.x。许多用户会遇到的问题是 Spring Security 的传递依赖解决了 Spring Framework 4.3.9.RELEASE 这可能会导致奇怪的类路径问题。
规避此问题的一种(乏味)方法是将所有 Spring Framework 模块包含在 pom.xml 的一部分中。另一种方法是将spring-framework-bom 包含在pom.xml 的<dependencyManagement> 部分中,如下所示:
pom.xml.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这将确保 Spring Security 的所有传递依赖项都使用 Spring 4.3.9.RELEASE 模块。