我正在尝试使用以下配置配置一个没有项目编写器的 Spring 批处理步骤。但是,我得到错误,说writer元素既没有'writer'属性也没有元素。
我通过spring batch : Tasklet without ItemWriter链接。但无法解决问题。有谁能告诉我在我提到的代码片段中要做的具体修改吗
<batch:job id="helloWorldJob">
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader="cvsFileItemReader"
commit-interval="10">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="classpath:cvs/input/report.csv" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names" value="id,sales,qty,staffName,date" />
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.mkyong.ReportFieldSetMapper" />
<!-- if no data type conversion, use BeanWrapperFieldSetMapper to map by name
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="prototypeBeanName" value="report" />
</bean>
-->
</property>
</bean>
</property>
</bean>
3条答案
按热度按时间o8x7eapl1#
对于基于块的步骤,读取器和写入器是必需的。
如果你不需要一个writer,那么就使用一个什么都不做的No-operation ItemWriter。
编辑:
一个no-op实现是一个空的接口实现,它什么都不做!
只要让你的类用空方法实现所需的接口。
No-op ItemWriter:
xu3bshqb2#
我希望你得到了答案,但我想为其他读者解释一下,当我们使用chunk时,通常我们声明reader,processor和writer。在块中,读取器和写入器是必需的,处理器是可选的。在你的例子中,如果你不需要writer,那么你需要创建一个实现ItemWriter的类。重写write方法并将其保留为空。现在创建一个writer类的bean,并将其作为writer的引用传递。
你的写作课会是什么样子。
}
3phpmpom3#
在maven repo中,你可以找到框架“spring-batch-samples”。
在这个框架中,你会发现这个作家: