跳至主要內容

Spring Framework发布5.3.11和5.2.18

mateplusSpringSpring前沿资讯大约 4 分钟

一、发布说明

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

随着越来越多的人使用Spring Boot 逐渐忽略了Spring Framework的关注,其实两者的关系密不可分,对Spring Boot 如果想要能研究得更深入,那么,就需要对Spring Framework有更足够的了解和应用。

二、介绍Spring Framework

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 Frameworkjdk 版本maven 版本
1.5.0.RELEASE4.3.6.RELEASE73.2+
1.5.2.RELEASE4.3.7.RELEASE73.2+
1.5.3.RELEASE4.3.8.RELEASE73.2+
1.5.4.RELEASE4.3.9.RELEASE73.2+
1.5.5.RELEASE4.3.10.RELEASE73.2+
1.5.7.RELEASE4.3.11.RELEASE73.2+
1.5.8.RELEASE4.3.12.RELEASE73.2+
1.5.9.RELEASE4.3.13.RELEASE73.2+
2.0.0.RELEASE5.0.2.RELEASE83.2+
2.1.*.RELEASE5.1.*.RELEASE83.2+
2.2.*.RELEASE5.2.*.RELEASE83.3+
2.3.*.RELEASE5.2.*.RELEASE8+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请自行查看官网

4.1 新特性

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

4.2 BUG修复

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

4.3 文档

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

4.4 依赖升级

  • Upgrade to JUnit 5.8.1 #27450
  • Upgrade to Reactor 2020.0.12 #27527
  • Upgrade to SmallRye Mutiny 1.1.1 #27555

详细请点击官网地址查看:Spring Framework 5.3.11 and 5.2.18 available nowopen in new window

五、Spring学习推荐

如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群open in new window,参与交流与讨论,更好的学习与进步!

上次编辑于:
贡献者: 程序猿DD