我收到了读者的项目清单.
Code在每个项目对象中都有一个属性,它具有我手头未知的几个可能的值.
1)根据Code每个项目的值,我想在与之相关的输出文件中写出该特定项目Code.例如,如果我当前的项目Code是"abc",则该项应写入编写器中的abc.txt.
2)如果Code当前项目中存在"xyz",且该文件不存在,则应创建一个新文件,该项目应转到该文件.
3)对于基于此创建的所有这样的多个文件Code,我还想添加页眉和页脚回调以输入一些细节,例如每个文件中的项目数.
是否有可能有一个满足3个以上要求的作家?
我知道使用multiresourceitemwriter,可以在多个输出文件之间划分数据.但据我所知,这种划分是基于物品的数量.例如,file1中的前10个项目,file2中的下10个项目,依此类推.
但是如何根据我的问题中提到的项属性将数据路由到输出文件?
我很熟悉Spring Batch,只需要一些指导,因为这是我第一次遇到这种问题.
谢谢阅读!
如果我正确理解您的问题,您需要一些项目.
首先,实现Classifier接口的分类器
public class ItemCodeClassifier {
@Classifier
public String classify(Item item) {
return item.getCode().getKey();// returns "abc", "xyz"
}
}
Run Code Online (Sandbox Code Playgroud)
其次是使用上述方法的路由器实现
<bean id="classifier" class="org.springframework.batch.classify.BackToBackPatternClassifier">
<property name="routerDelegate">
<bean class="ItemCodeClassifier" />
</property>
<property name="matcherMap">
<map>
<entry key="abc" value-ref="abcItemWriter" />
<entry key="xyz" value-ref="xyzItemWriter" />
</map>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
最后,一个ClassifierCompositeItemWriter
<bean id="ItemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter">
<property name="classifier" ref="classifier" />
</bean
Run Code Online (Sandbox Code Playgroud)
没有编译上面但希望它有所帮助.
我会尝试至少两种策略
| 归档时间: |
|
| 查看次数: |
11513 次 |
| 最近记录: |