我正在尝试使用下面的配置配置没有项目编写器的弹簧批处理步骤。但是我得到那个作家的错误 元素既没有作家也没有作家。属性也不是元素。
我浏览了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>
答案 0 :(得分:8)
对于基于块的步骤,读者和作者是强制性的 如果你不想让一个作家使用一个什么也不做的无操作的ItemWriter。
编辑:
一个no-op实现是一个空的接口实现,什么都没有!
让你的类用空方法实现可疑的接口。
No-op ItemWriter:
public class NoOpItemWriter implements ItemWriter {
void write(java.util.List<? extends T> items) throws java.lang.Exception {
// no-op
}
}
答案 1 :(得分:2)
我希望你得到答案,但我想为其他读者解释,当我们使用chunk时,我们通常会声明读者,处理器和编写者。在块读取器和写入器是必需的,处理器是可选的。在你的情况下,如果你不需要编写器,那么你需要创建一个实现ItemWriter的类。覆盖write方法并将其保持空白。现在创建一个writer类的bean并将其作为writer的引用传递给它。
<batch:step id="recordProcessingStep" >
<batch:tasklet>
<batch:chunk reader="fileReader" processor="recordProcessor"
writer="rocordWriter" commit-interval="1" />
</batch:tasklet>
</batch:step>
你的作家课看起来像。
public class RecordWriter<T> implements ItemWriter<T> {
@Override
public void write(List<? extends T> items) throws Exception {
// TODO Auto-generated method stub
}
}
答案 2 :(得分:1)
在maven repo中,您可以找到框架&#34; spring-batch-samples&#34; 在这个框架中,你会发现这个作家:
org.springframework.batch.sample.support.DummyItemWriter