在 spring 批次中有条件地将数据发送给多个写入器

Conditionally send data to multiple writers in spring batch

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

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

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

Writer - Writer 将设置 Classifer 来决定我们需要使用哪个 writer。基于 classfiter 输出 writer 将被决定。

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