Spring Batch:FlatFileItem Writer

时间:2017-08-27 17:39:06

标签: java spring spring-batch

我配置Spring Batch作业,从数据库读取一些项目,做一些基本过程,结果应该创建csv文件:

<batch:job id="testJob" job-repository="jobRepository" parent="jobParent">
    <batch:step id="testStep" allow-start-if-complete="true">
        <batch:tasklet>
            <batch:chunk
                    reader="testReader"
                    processor="testProcessor"
                    writer="testFileItemWriter"
                    commit-interval="1"
            />
        </batch:tasklet>     
    </batch:step>
</batch:job>

<bean id="testReader" ...>

<bean id="testProcessor" ...>

<bean id="testFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
    <property name="resource" value="file:test.csv" />
    <property name="lineAggregator">
        <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
            <property name="delimiter" value=", "/>
            <property name="fieldExtractor">
                <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                    <property name="names" value="testId, firstName, lastName, addressLine1, addressLine2, city, stateProvince, postalCode,
                    country" />
                </bean>
            </property>
        </bean>
    </property>
</bean>

但即使读者从数据库0项获取,也会创建此CSV文件。 因此,结果创建了空CSV文件。

当读者未在数据库中找到任何项目然后不创建空文件(而不是调用编写器)时,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

在你的作家中,请添加以下属性,如果由作者创建,这将删除一个空文件。

<property name="shouldDeleteIfEmpty" value="true" />