Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring批处理:读卡器返回null时停止编写器_Java_Xml_Spring_Xsd_Spring Batch - Fatal编程技术网

Java spring批处理:读卡器返回null时停止编写器

Java spring批处理:读卡器返回null时停止编写器,java,xml,spring,xsd,spring-batch,Java,Xml,Spring,Xsd,Spring Batch,我正在使用SpringBatch 4(annotation),有一项工作是执行一个步骤,读取XML文件并写入文本文件。在阅读XML之前,我使用了一个自定义读取器和一个简单的平面编写器(SpringBatch参考)。我检查了这个XML是否是一个文件,如果是,我将处理从XML到文本的转换。但是如果文件无效,我将在读卡器中返回null 问题是,当我在读卡器中返回null时,编写器仍在工作,并将一个空文件放入输出文件夹。解决办法是什么 @Bean public FlatFileItemWriter it

我正在使用SpringBatch 4(annotation),有一项工作是执行一个步骤,读取XML文件并写入文本文件。在阅读XML之前,我使用了一个自定义读取器和一个简单的平面编写器(SpringBatch参考)。我检查了这个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();
}
@Bean public FlatFileItemWriter itemWriter(){
回来
新的FlatFileItemWriterBuilder()
.name(“项目作者”)
.resource(新文件系统资源(“target/test outputs/output.txt”))
.lineAggregator(新的PassThroughLineAggregator())
.build();
}
问题是,当我在读卡器中返回null时,编写器仍在工作,并将一个空文件放入输出文件夹。解决办法是什么

您可以在
FlatFileItemWriter
上设置
shouldDeleteIfEmpty
,如果输出文件为空,则会将其删除。有关这方面的详细信息,请参见:

但是如果文件无效,我会在读取器中返回null

返回null表示数据源有效且已耗尽(可能为空)。对于无效的数据源,我会抛出一个异常并使步骤失败。另一种解决方案是使用
NoWorkFoundStepExecutionListener
在找不到工作时使步骤失败。有关此侦听器的更多详细信息,请参见: