领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我们很高兴地宣布,Spring Batch 4.0.0.M1 现已通过 Github 和 Pivotal 下载库提供。此版本代表 Spring Batch 4.0 版本的第一个里程碑。非常感谢所有为此次版本做出贡献的人。
我们借此机会从几个方面重新审视 Spring Batch。具体来说:
Spring Batch 历来遵循 Spring Framework 的基线,旨在尽可能提供 Spring Batch 和 Spring Framework 版本之间的最佳互操作性。Spring Batch 4.0 借此机会将最低所需版本升级到 Spring Framework 5。因此,Spring Batch 4 需要 Java 8。如果您已经在使用 Java 8 的 Spring Batch,这应该非常透明,因为 Spring Batch 多年来一直拥有可靠的 Java 8 体验。只要 Java 8 存在,就一直支持执行以下操作
@Bean
public JdbcCursorItemReader<Foo> reader() {
JdbcCursorItemReader<Foo> reader = new JdbcCursorItemReader<>();
reader.setDataSource(this.dataSource);
reader.setName("fooReader");
reader.setSql("SELECT * FROM FOO ORDER BY FIRST");
reader.setRowMapper((rs, rowNum) -> {
Foo foo = new Foo();
foo.setFirst(rs.getInt("FIRST"));
foo.setFirst(rs.getString("SECOND"));
foo.setFirst(rs.getString("THIRD"));
return foo;
});
return reader;
}
就像 Spring Framework 5 基于 Java 8 的重新基线一样,这对框架内部的影响更大。现在,我们(框架的开发人员和贡献者)将能够利用您一直以来都在使用的 Java 8 的有趣功能。
随着根据 Spring Framework 重新调整 Java 的基线,Spring Batch 4 还对所有依赖项进行了全面检查并将其升级到最新版本。这既是为了跟上最新技术,也是为了让我们能够为我们提供的功能提供支持。我们需要依赖于这些依赖项的支持版本,以便我们可以解决 bug。因此,我们需要跟上它们当前支持的版本。Hibernate 就是一个例子。Spring Batch 3.x 支持 Hibernate 到 4.2.x。但是,如果发现 Hibernate 4.2.x 的问题,则不会在那里修复。JBoss 只会在 5.2 中修复它。因此,我们需要保持最新状态。Spring Framework 5 对其所有依赖项进行了全面审查。Spring Batch 4 更新了所有依赖项,使其与 Spring Framework 保持一致。
Java 配置对于 Spring Batch 来说并不新鲜。Spring Batch 2.2 具有 `@EnableBatchProcessing` 注解以及相关的构建器。但是,Java 配置的故事仍然有很多不足之处。例如,使用 Spring Batch 3.0.7 中可用的内容,`FlatFileItemReader` 的配置可能如下所示:
@Bean
public FlatFileItemReader 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(String [] {"first", "second", "third"});
tokenizer.afterProperitesSet();
DefaultLineMapper lineMapper = new DefaultLineMapper();
lineMapper.setLineTokenizer(tokenizer);
lineMapper.setFieldSetMapper(fieldSetMapper);
reader.setLineMapper(lineMapper);
}
但是,在 Spring Batch 4 中,我们引入了一组构建器,这些构建器将简化提供的读取器和写入器的构建。使用 Spring Batch 4 中的构建器,上述 Spring Batch 3.0.x 的示例转换为以下内容:
@Bean
public FlatFileItemReader reader(Resource resource) {
return new FlatFileItemReaderBuilder<Foo>()
.name("fooReader")
.resource(resource)
.delimited()
.names(new String[] {"first", "second", "third"})
.targetType(Foo.class)
.build();
}
截至此里程碑,`FlatFileItemReader`、`FlatFileItemWriter`、`JdbcCursorItemReader` 和 `JdbcBatchItemWriter` 的构建器可用。在 Spring Batch 4 正式发布之前,我们将解决其他项目读取器和项目写入器。
展望未来,我们计划为其他 Spring Batch 读取器和写入器实现构建器。我们还计划全面审查我们的文档。当前的文档采用我们认为的“XML 优先”方法。对于 Spring Batch 的正式发布,我们打算将文档重构为更“Java 优先”的方法,以便更好地了解如何使用 Java 配置配置批处理应用程序。请关注进一步的里程碑,Spring Batch 4 将在 Spring Framework 5 正式发布后不久正式发布。
我们期待您在 Jira、StackOverflow 或通过 Twitter @michaelminella 向我直接反馈这些新功能!