有条件地将数据发送到 spring 批处理中的多个写入器



我的处理器中有一些逻辑,在此基础上,我需要决定是否需要在表A(编写器A(或表B(编写器(中写入项目

例如,Item已提交type和类型可以具有A or B的值,并且根据type提交的价值,我需要决定我需要在哪个表中写入数据。

这可以通过使用Classifier来实现。以下是配置:

编写器 - 编写器将设置Classifer以决定我们需要使用哪个编写器。根据类拟合器输出编写器将决定。

@Bean
public ItemWriter<Pojo> itemWriter() {
BackToBackPatternClassifier classifier = new BackToBackPatternClassifier();
classifier.setRouterDelegate(new MyClassifier());
classifier.setMatcherMap(new HashMap<String, ItemWriter<? extends Pojo>>() {
{
put("A", WriterA);
put("B", WriterB);
}
});
ClassifierCompositeItemWriter<Pojo> writer = new ClassifierCompositeItemWriter<Pojo>();
writer.setClassifier(classifier);
return writer;      
}

分类

public class MyClassifier {
@Classifier
public String classify(Pojo Pojo) {
return Pojo.getType();
}
}

最新更新