Spring Framework 5.3.9 和 5.2.16 现已推出

北京时间7月14日,Spring Framework推出 5.3.95.2.16 两个新版本。Spring Framework 5.3.9 包括[45 个修复和改进]。Spring Framework 5.2.16 包括[12 个选定的修复和改进]。

随着越来越多的人使用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的版本对应关系

三、主要更新内容

5.3.9

3.1 新的功能

  • 配置 CommonsMultipartResolver 以支持特定的 HTTP 方法
  • 允许 BeanDefinitionBuilder 使用[ResolvableType]设置实例供应商
  • @ResponseStatus MessageSource 未解决 on handler 方法的原因
  • ResourceHandlerRegistry#getHandlerMapping 应该在外循环中初始化一次处理程序
  • 使用 BeanDefinitionBuilder 设置合成标志
  • BeanCreationException 错误消息应始终包括声明构造函数(或工厂方法)类
  • 改进 Jetty 10 检查 JettyClientHttpResponse
  • Jetty10RequestUpgradeStrategy 使用旧的码头 9 类 HandshakeRFC6455
  • 使用 Jetty 10 及其反应式客户端的 ClassNotFoundException
  • 尽可能使用 StringBuilder.append(char)
  • 考虑“wss”和“https”作为转发标头检查中的安全标志
  • SynchronossPartHttpMessageReader 应仅在需要时创建临时目录
  • 在 BeanMethod 和 *Metadata 类型中实现 equals、hashCode 和 toString
  • 删除 BeanUtils 中的日志依赖
  • 从自动代理中排除密封接口(为了兼容 JDK 17)
  • 使用 TransactionOperator 运行事务时出现 Blockhound 错误
  • 配置 StandardServletMultipartResolver 以仅支持 multipart/form-data
  • 添加一种从 ThreadPoolTask​​Scheduler 设置 executeExistingDelayedTasksAfterShutdown 的方法
  • 在设置本地值之前在 ThreadPoolTask​​Executor 中应用动态更改

3.2 Bug修复

  • JettyHttpHandlerAdapter 不知道 Server[Request|Response]Wrapper
  • {*path} 模式 (CaptureTheRestPathElement) 在 @PathVariable 路径包含未记录的前导斜杠
  • 在 jetty 10 中调用 JettyWebSocketSession.getRemoteAddress 时出现 NoSuchMethodError
  • CronExpression在 spring-context-5.3.8 上 仍然 被破坏
  • SimpleMethodMetadataReadingVisitor.Source.toString() 省略了方法参数的分隔符
  • DefaultPathSegment 允许改变共享的空参数映射
  • 使用 proxyTargetClass=true 的 AOP 自动代理和介绍建议不适用于 JDK 代理目标
  • ServletRequestDataBinder 假定标准 servlet 多部分处理
  • DataClassRowMapper 不应覆盖 Kotlin 初始化属性

3.3 文档

  • 将 Javadoc 添加 @sinceBeanDefinitionBuilder.setSynthetic()
  • 修复指向 Javadoc API 的链接
  • 添加了 HandlerInterceptor 的描述
  • 修复 core-beans.adoc 中的错字
  • 修复 BeanDefinitionDsl.kt 中的错字
  • 改进 ContentCachingRequestWrapper 的 getContentAsByteArray 方法的文档
  • 修复了参考文档内容协商默认设置的解释
  • @Valid* 在参考手册中记录任何注释都会触发验证
  • 改进 RequestPartMethodArgumentResolver Javadoc
  • 澄清 ResourceBundleMessageSource 中的 baseName 不支持多个位置
  • 链接替代文档格式

3.4 依赖升级

  • 适配 HtmlUnit 2.51 #27147
  • 升级至 ASM 9.2 (for early Java 18 support) #27069
  • 升级至 Kotlin 1.5.21 #27110
  • 升级至 Kotlin Coroutines 1.5.1 #27157
  • 升级至 Mockk 1.11.0 #27109
  • 升级至 Reactor 2020.0.9 #27158
1 个赞