我正在阅读一个文件并基于一些业务逻辑写入两个不同的文件。我正在使用 ClassifierCompositeItemWriter 来写入两个不同的文件。
仅当commit-interval为1或者某些记录被写入不同的输出文件时才有效。
以下是代码段
<batch:job id="interestJob">
<batch:step id="verifyFile" parent="VerifyFile">
<batch:fail on="FAILED"/>
<batch:next on="*" to="processInterest"/>
</batch:step>
<batch:step id="processInterest">
<batch:tasklet>
<batch:chunk reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="50" skip-limit="1000000">
<batch:streams>
<batch:stream ref="masterCarditemWriter"/>
<batch:stream ref="visaitemWriter"/>
</batch:streams>
</batch:tasklet>
</batch:step>
</batch:job>
<bean id="itemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter">
<property name="classifier" ref="classifier" />
</bean>
<bean id="classifier" class="org.springframework.batch.classify.BackToBackPatternClassifier">
<property name="routerDelegate">
<bean class="com.scotiabank.sco.report.batch.dda.interest.MyClassifier" />
</property>
<property name="matcherMap">
<map>
<entry key="visa" value-ref="visaitemWriter" />
<entry key="master" value-ref="masterCarditemWriter" />
</map>
</property>
</bean>
public class MyClassifier {
@Classifier
public String classify(Interest dda) {
return dda.getCardType();
}
}