java - 有条件地将数据发送到 Spring Batch 中的多个写入器

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

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

例如 Item 已提交 type,并且 type 的值可以为 A 或 B,并且基于 type 中的值>提交我需要决定我需要在哪个表中写入数据。

最佳答案

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

Writer - Writer 将设置 Classifer 来决定我们需要使用哪个 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();
    }
}

关于java - 有条件地将数据发送到 Spring Batch 中的多个写入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52166391/

相关文章:

java - 使用 ProxyFactoryBean 时出现异常

java - 如何使用 XML 覆盖 @Autowired

maven - 删除从 spring-boot-starter-parent 继承的额外依赖项

java - 如何检测哪个程序在 Windows 7 上播放声音?

c# - 工厂模式很多参数需要提示

java - Recyclerview 继续滚动到位置

java - 当我在 Controller 中调用服务时,出现错误空指针异常

java - 给定字符集,如何将单个字符代码转换为 `char`?

java - spring中如何使用jackson代替JdkSerializationRedisSerializer

spring-boot - 升级到 Spring Boot 1.4.0 后未找到 com.querydsl.core.types.Predicate 符号