北京时间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 属性上提供访问器
- 允许在
CglibAopProxy
via 中避免类验证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 去世的讣告。