Spring Framework 发布 5.3.11 及 5.2.18 正式版

北京时间10月15日,Spring Framework推出 5.3.11 和 5.2.18 两个新版本。Spring Framework5.3.11包括32 个修复和改进。Spring Framework5.2.18包括10个选定的修复和改进。

Spring 使创建 Java 企业应用程序变得容易。它提供了在企业环境中使用 Java 语言所需的一切,支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以根据应用程序的需要灵活地创建多种架构。从 Spring Framework 5.1 开始,Spring 需要 JDK 8+(Java SE 8+)并为 JDK 11 LTS 提供开箱即用的支持。建议将 Java SE 8 update 60 作为 Java 8 的最低补丁版本,但通常建议使用最新的补丁版本。

Spring 支持广泛的应用场景。在大型企业中,应用程序往往存在很长时间,并且必须运行在升级周期不受开发人员控制的JDK和应用程序服务器上。其他可能作为嵌入服务器的单个 jar 运行,可能在云环境中。还有一些可能是不需要服务器的独立应用程序(例如批处理或集成工作负载)。

Spring 是开源的。它拥有一个庞大而活跃的社区,可根据各种实际用例提供持续的反馈。这帮助 Spring 在很长一段时间内成功发展。

Spring Framework 与Spring Boot的版本对应关系

Spring boot 版本 Spring Framework JDK 版本 maven 版本
1.5.0.RELEASE 4.3.6.RELEASE 7 3.2+
1.5.2.RELEASE 4.3.7.RELEASE 7 3.2+
1.5.3.RELEASE 4.3.8.RELEASE 7 3.2+
1.5.4.RELEASE 4.3.9.RELEASE 7 3.2+
1.5.5.RELEASE 4.3.10.RELEASE 7 3.2+
1.5.7.RELEASE 4.3.11.RELEASE 7 3.2+
1.5.8.RELEASE 4.3.12.RELEASE 7 3.2+
1.5.9.RELEASE 4.3.13.RELEASE 7 3.2+
2.0.0.RELEASE 5.0.2.RELEASE 8 3.2+
2.1.*.RELEASE 5.1.*.RELEASE 8 3.2+
2.2.*.RELEASE 5.2.*.RELEASE 8 3.3+
2.3.*.RELEASE 5.2.*.RELEASE 8+ 3.3+
2.4.* 5.3.* 8+ 3.3+
2.5.* 5.3.* 8+ 3.3+
2.6.* 5.3.* 8+ 3.3+

主要更新内容

以下列举了5.3.11版本的更新内容,5.2.18请自行查看官网

1. 新特性

  • 增强 DefaultResponseErrorHandler 以允许记录完整的错误响应正文
  • 在 CookieAssertions 失败消息中包含正确的关键字
  • 在 ByteArrayResource.hashCode() 中使用 Arrays.hashCode()
  • 通过系统属性允许默认的 CacheAwareContextLoaderDelegate 配置
  • 直接调用 bean 派生的 (Auto)Closeable.close() 方法
  • JDK 9+ 的 JNDI API 防御性参考(可选java.naming模块)
  • 当消费者任务被拒绝时 DefaultMessageListenerContainer 不会记录错误/警告
  • 在 externallyManaged RootBeanDefinition 属性上提供访问器
  • 允许在CglibAopProxyvia 中避免类验证ProxyFactory
  • 添加对非公共记录声明的支持
  • 为格式错误的 HTTP 响应发出 WebClientResponseException
  • 如果当前连接的自动提交设置为 false,则 DatabasePopulatorUtils.execute 应该提交

2. BUG修复

  • CronTrigger 使用 new Date() 而不是上下文的时钟
  • 在 AbstractFileResolvingResource.isReadable() 下载巨大的 jars 以检查组件长度时 con.getContentLengthLong() 的性能影响
  • ResourceUrlEncodingFilter 对 HttpServletResponse#encodeURL 的性能影响
  • UriTemplateRequestEntity 不会覆盖 hashCode() 和 equals()
  • DataBufferUtils.write 丢失上下文
  • 避免在 <cache:annotation-driven /> 中重复注册 JCacheOperationSource bean
  • 使用 Java 17 生成代理失败,并显示“无法调用“Object.getClass()”,因为“cause”为空”
  • MediaType.sortBySpecificityAndQuality 抛出 java.lang.IllegalArgumentException:比较方法违反其一般约定
  • 读取 SSE 响应时删除前导空格
  • RegEx 中的非转义右花括号导致 Android 上的初始化错误
  • ConcurrentReferenceHashMap 的 entrySet 违反了 Map 契约
  • 避免在 StandardBeanExpressionResolver 中提前确定 ConversionService
  • Spring Framework >= 5.3.8 由于 InputStream 优化,ASM ClassReader 无法解析类文件
  • StringUtils.collectionToDelimitedString(?) 当集合包含 null 时失败并出现 NullPointerException
  • Spring HATEOAS 在 WebFlux 中使用 Kotlin 协程和 ResponseEntity 导致 406

3. 文档

  • 删除关于缺少缓存 API 的评论。

4. 依赖升级

  • Upgrade to JUnit 5.8.1
  • Upgrade to Reactor 2020.0.12
  • Upgrade to SmallRye Mutiny 1.1.1

详细请点击官网地址查看:https://spring.io/blog/2021/10/14/spring-framework-5-3-11-and-5-2-18-available-now

下一节:J 语言邮件列表昨日发布了 J 语言发明者之一 Roger Hui 去世的讣告。