【问题标题】:Spring Batch complex custom ItemReaderSpring Batch 复杂的自定义ItemReader
【发布时间】:2018-03-12 09:50:11
【问题描述】:

我是春季批次的新手,我无法确定我需要为读者使用什么模式。我需要创建类 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&lt;ClassB&gt; 应该由更复杂的流程创建。首先,我从表 C 的查询中获取数据,但此查询的结果是 List&lt;ClassA&gt;。我需要处理List&lt;ClassA&gt; 的每一项并将其转换为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
        ...
    }
    

我找到了多个简单块模式和 tasklet 的示例,但没有一个遵循这种结构。该作业使用 java 配置和 JdbcTemplate 进行查询。 Web服务的开发调用它完成了,我唯一的问题是我必须从多个表中读取并有效地读取列表,将每个项目转换为ClassB并设置为WsRequestClass

请指导我使用的模式,因为常见的ItemReader不适合我,而且我不知道如何实现自定义阅读器,让我做我想做的事。

【问题讨论】:

    标签: spring spring-batch


    【解决方案1】:

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

    【讨论】:

    • 谢谢!该链接非常有助于阐明要遵循的模式!我遇到的唯一障碍是,如果我在处理器中调用 DAO 以获取 WSRequestClassdataList,DAO 的返回是 ClassA 的列表(我无法更改,因为它已经是一个 DAO存在并且我必须使用),然后我将创建一个调用 DAO 的 ServiceImpl 并将 List&lt;ClassA&gt; 转换为 List&lt;ClassB&gt;,但这意味着使用 For 语句循环整个列表。有没有更好的方法可以利用 Spring Batch 来做到这一点?
    • 感谢@Michael Minella,我打算编写一个自定义阅读器,它可以从多个表中读取!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多