gpt4 book ai didi

java - Spring 批处理 : stop writer when reader return null

转载 作者:行者123 更新时间:2023-12-02 10:55:33 43 4
gpt4 key购买 nike

我正在使用 Spring Batch 4(注释),并且有一项工作,其中一步读取 XML 文件并写入文本文件。在读取 XML 之前,我使用了自定义阅读器和简单的平面编写器(Spring Batch 引用)。我检查了该 XML 是否是一个文件,如果是,我将处理从 XML 到文本的转换。但如果文件无效,我会在阅读器中返回 null

问题是,当我在阅读器中返回 null 时,编写器仍在工作并将一个空文件放入输出文件夹中。解决办法是什么?

@Bean public FlatFileItemWriter itemWriter() {
return
new FlatFileItemWriterBuilder<Foo>()
.name("itemWriter")
.resource(new FileSystemResource("target/test-outputs/output.txt"))
.lineAggregator(new PassThroughLineAggregator<>())
.build();
}

最佳答案

The problem is that when I return null in the reader, the writer is still working and puts an empty file into the output folder. What is the solution?

您可以在FlatFileItemWriter上设置shouldDeleteIfEmpty,如果输出文件为空,则将其删除。更多详细信息请参见:https://docs.spring.io/spring-batch/4.0.x/api/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilder.html#shouldDeleteIfEmpty-boolean-

But if the file is not valid I return null in the reader.

返回 null 意味着数据源有效并且已耗尽(并且可能为空)。对于无效的数据源,我会抛出异常并使该步骤失败。另一种解决方案是使用 NoWorkFoundStepExecutionListener 在未找到工作的情况下使该步骤失败。有关此监听器的更多详细信息,请参见:https://docs.spring.io/spring-batch/4.0.x/reference/html/common-patterns.html#handlingStepCompletionWhenNoInputIsFound

关于java - Spring 批处理 : stop writer when reader return null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51773652/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com