领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我谨代表团队和所有做出贡献的人,很高兴地宣布 Spring Batch 5.2 的第一个里程碑版本现已在我们的里程碑仓库中提供。这篇博文将带您了解 Spring Batch 5.2 的主要变更。
RecursiveCollectionLineAggregator 中可配置的行分隔符有关完整的更改列表,请查看 发布说明。
在此版本中,Spring 依赖项已升级到以下版本:
在 5.1 版本之前,JPA 游标和分页 Item Reader 不支持查询提示(例如 fetch size、timeout 等)。用户需要提供自定义查询提供者才能指定自定义提示。
在此版本中,JPA Reader 及其相应的构建器已更新,在定义要使用的 JPA 查询时接受查询提示。
此版本在 JDBC 游标和分页 Item Reader 的构建器中引入了一个新方法,该方法允许用户在项目类型是数据类(Java record 或 Kotlin data class)时指定 DataClassRowMapper。
名为 dataRowMapper(TargetType.class) 的新方法类似于 beanRowMapper(TargetType.class),旨在使普通类(Java bean)和数据类(Java record)之间的行映射器配置保持一致。
直到现在,RecursiveCollectionLineAggregator 中的行分隔符属性被设置为系统的行分隔符值。虽然可以通过系统属性更改此值,但这种配置样式与其他批处理工件属性不一致。
此版本在 RecursiveCollectionLineAggregator 中引入了一个新的 setter,允许用户配置自定义行分隔符值,而无需使用系统属性。
在 5.1 版本中,批处理基础结构 bean 的默认配置通过在应用程序上下文中定义 JobRegistryBeanPostProcessor bean 来自动填充 job 注册表。在 Spring Framework 最近的一次更新中,BeanPostProcessorChecker 的日志级别发生了变化,导致典型的 Spring Batch 应用程序中出现了与 JobRegistryBeanPostProcessor 相关的几个警告。这些警告是由于 JobRegistryBeanPostProcessor bean 依赖于 JobRegistry bean,这并不推荐,并且可能导致 bean 生命周期问题。
在此版本中,通过将填充 JobRegistry 的机制从使用 BeanPostProcessor 更改为使用 SmartInitializingSingleton,解决了这些问题。现在 JobRegistryBeanPostProcessor 已被弃用,取而代之的是新添加的 JobRegistrySmartInitializingSingleton。
感谢所有为本版本做出贡献的人!Spring Batch 5.2.0-M1 随 Spring Boot 3.4.0-M3 一起发布。
我们期待您在 Github Issues、Github Discussions、Twitter 和 StackOverflow 上提供反馈。