在春季批处理中有条件地将数据发送给多个作者

时间:2018-09-04 12:29:25

标签: java spring spring-boot spring-batch batch-processing

我的处理器中有一些逻辑,因此我需要决定是否需要在TableA(WriterA)或TableB(writer)中编写项目

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

1 个答案:

答案 0 :(得分:1)

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

作家-作家将设置Classifer来决定我们需要使用哪个作家。基于classfiter的输出将决定作者。

@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();
    }
}