Spring Batch 4.0.0.RELEASE 现已发布

发布 | Michael Minella | 2017 年 12 月 04 日 | ...

我们很高兴地宣布 Spring Batch 4.0.0.RELEASE 现已通过 Github、Pivotal 下载库和 Maven Central 提供。这是 4.0 系列的正式发布版本。衷心感谢为本次发布做出贡献的所有人。

我们是如何走到这里的

Spring Batch 4 是自 2014 年 3.0 版本发布以来的第一个主要版本。自那时起,Spring 生态系统发生了许多变化。本次发布旨在使 Spring Batch 与这些变化保持同步。Spring Batch 3 发布时,Java 配置才刚刚开始取代基于 XML 的配置。Spring Boot 尚未发布。此外,虽然 JDK 8 刚刚问世,但 Spring Framework 4(Spring Batch 3 基于此)仍然支持低至 JDK 6 的 Java 版本。Spring Batch 4 在所有这些方面都进行了升级。让我们来看一下。

新的基线

Spring Batch 3 基于 Spring Framework 4,后者支持一个依赖生态系统,可追溯到 Java 6。Spring Batch 4 全面更新了其依赖树,使其与即将发布的 Spring Boot 2 依赖树保持同步,包括将 Spring Framework 5 和 Java 8 作为基线要求。虽然 Spring Batch 多年来一直全面支持 Java 8,但此次升级使我们能够在内部使用 Java 8 惯用法,从而改进和简化内部实现。

改进的 Java 配置

如前所述,Spring Batch 4 是自 Spring Boot 问世以来的第一个主要版本。在此版本中,我们在用户感到最困扰的所有领域都努力改进了 Java 配置体验。现在所有的 ItemReaderItemWriter 实现都提供了构建器。Spring Batch 3 和 4 之间简化配置的一个例子是配置 FlatFileItemReader。使用 Spring Batch 3 的 Java 配置功能,您的配置可能如下所示:

@Bean
public FlatFileItemReader<Foo> reader(Resource resource) 
    throws Exception {

        FlatFileItemReader<Foo> reader = new FlatFileItemReader<>();

        reader.setName(“fooReader”);
        reader.setResource(resource);

        BeanWrapperFieldSetMapper<Foo> fieldSetMapper = 
            new BeanWrapperFieldSetMapper<>();
        fieldSetMapper.setTargetType(Foo.class);
        fieldSetMapper.afterPropertiesSet();

        DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
        tokenizer.setNames(new String[] {“first”, “second”, “third”});
        tokenizer.afterPropertiesSet();

        DefaultLineMapper lineMapper = new DefaultLineMapper();
        lineMapper.setLineTokenizer(tokenizer);
        lineMapper.setFieldSetMapper(fieldSetMapper);

        reader.setLineMapper(lineMapper);

        return reader;
    }

使用 Spring Batch 4,之前的配置被简化为如下所示:

@Bean
public FlatFileItemReader<Foo> reader(Resource resource) {
        return new FlatFileItemReaderBuilder<Foo>()
            .name(“fooReader”)
            .resource(resource)
            .delimited()
            .names(new String[]{“first”, “second”, “third”})
            .targetType(Foo.class)
            .build();
}

本次发布为所有 ItemReaderItemWriter 实现提供了流畅的构建器,如前例所示。

新文档

Spring Batch 的文档多年未进行重大修订。现在是时候了。本次发布将文档迁移到 Asciidoc,以简化文档创建并使其在整个 Spring 项目系列中保持一致。此外,参考文档现在可以通过页面顶部的开关选择以 Java 配置或 XML 配置的方式查看任何示例。

Java configuration toggle

此开关让您可以选择以所需的方式呈现文档。如果您的项目基于 XML,则整个文件会显示适合 XML 配置的内容。如果您使用 Java 配置,则整个文件会显示适合使用 Java 配置的项目的内容。

等等!还有更多内容!

除了以上所有内容,Spring Batch 4 还包括其他改进,例如一个新的 ItemProcessor,它委托给 java.util.Function,让您可以创建一个零 Spring 依赖的处理器。社区提供的增强功能,例如 Takaaki Iida 提供的 MongoItemReader 中的 Query 支持,都提供了此新功能的示例。

您怎么看?

我们期待您在 JiraStackOverflow 上,或者直接通过 Twitter @michaelminella 或在 SpringOne Platform 现场提供关于这些新功能的反馈!

Spring Batch 主页 | GitHub 上的源代码 | 参考文档

获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

抢先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获取支持

Tanzu Spring 通过一项简单的订阅提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举办的活动

查看 Spring 社区所有即将举办的活动。

查看全部