Spring Batch复杂自定义ItemReader

时间:2017-09-30 20:10:07

标签: spring spring-batch

我是春季批次的新手,我无法确定读者需要使用的模式。我需要创建类WSRequestClass并将其发送到SOAP Web服务。

public class WSRequestClass{
    private String data1;
    private String data2;
    private String data3;
    private String data4;
    private List<ClassB> dataList;
}

要创建WSRequestClass是必要的:

  1. 从表A中阅读data1data2
  2. 从表B中阅读data3data4
  3. List<ClassB>应该从更复杂的流程中创建。首先,我从表C中获取查询数据,但此查询的结果是List<ClassA>。我需要处理List<ClassA>的每个项目并将其转换为ClassB,其中一些属性是从ClassA计算的。 (大块模式,但没有作家)。

    public class ClassA {
        private Date date;
        private BigDecimal amount1;
        private BigDecimal amount2;
        private String data;
    
        //getters & setters
        ...
    }
    
    public class ClassB {
        private Date date;
        private BigDecimal amount1;
        private BigDecimal amount2;
        private BigDecimal amount3;
        private BigDecimal amount4;
        private String data1;
        private String data2;
    
        //getters & setters
        ...
    }
    
  4. 我找到了simples chunk pattern和tasklets的多个例子,但没有一个遵循这个结构。此作业使用java配置和JdbcTemplate进行查询。 Web服务的开发称它已经完成,我唯一的问题是我必须从多个表中读取并有效地读取列表,将每个项目转换为ClassB并设置为WsRequestClass

    请指导我使用的模式,因为常见ItemReader对我不起作用,而且我不知道如何实现允许我按照自己的意愿行事的自定义阅读器。

1 个答案:

答案 0 :(得分:1)

我认为你错了。批处理中存在称为驱动查询模式的模式。在其中,您的读者基本上读取对象的键。然后使用处理器填写其他信息。您可以在Spring Batch文档中阅读有关此模式的更多信息:https://docs.spring.io/spring-batch/trunk/reference/html/patterns.html#drivingQueryBasedItemReaders