以下の構成を使用して、アイテムライターなしで春のバッチステップを構成しようとしています。ただし、ライター要素に「ライター」属性も要素もないというエラーが表示されます。
私はリンクを通過しました 春のバッチ: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>
チャンクベースのステップリーダーとライターは必須です。
ライターが不要な場合は、何もしないNo-operation ItemWriterを使用します。
編集:
何もしない実装は、何もしないインターフェースの空の実装です...何もありません!
クラスに空のメソッドで望ましいインターフェースを実装させるだけです。
何もしないItemWriter:
public class NoOpItemWriter implements ItemWriter {
void write(Java.util.List<? extends T> items) throws Java.lang.Exception {
// no-op
}
}
私はあなたが答えを得たことを願っていますが、私は他の読者のためにそれを説明したいと思います。チャンクでは、リーダーとライターは必須であり、プロセッサーはオプションです。あなたの場合、ライターが必要ない場合は、ItemWriterを実装するクラスを作成する必要があります。書き込みメソッドをオーバーライドし、空白のままにします。次に、ライタークラスのBeanを作成し、ライターの参照として渡します。
<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
}
}
maven repo には、「spring-batch-samples」というフレームワークがあります。
このフレームワークには、このライターがあります:
org.springframework.batch.sample.support.DummyItemWriter
Java 8以上の場合、読みやすくするためにこの方法を使用できます。空のクラスは必要ありません。
public Step requeryFpxStep(){
return stepBuilderFactory.get("MyJobName")
.<Foo, Foo>chunk(2)
.reader(myReader())
.processor(myProcessor())
.writer(items -> {
// do nothing
})
.build();
}