gpt4 book ai didi

spring-batch - 根据项目的属性作为标准将数据路由到项目编写器中的多个文件

转载 作者:行者123 更新时间:2023-12-04 04:01:15 25 4
gpt4 key购买 nike

我在我的阅读器中得到一个项目列表。

有一个属性叫 Code在每个项目对象中都有几个我事先不知道的可能值。

1) 基于 Code 的值在每个项目中,我想将该特定项目写入与该 Code 有关的输出文件中.例如如果我当前项目的 Code为“abc”,则该项目应写入到writer 中的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"
}
}

其次是使用上述方法的路由器实现
<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>

最后,一个 ClassifierCompositeItemWriter
<bean id="ItemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter">
<property name="classifier" ref="classifier" />
</bean

没有编译上面的,但希望它有帮助。

关于spring-batch - 根据项目的属性作为标准将数据路由到项目编写器中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com