2017-09-30 14 views
1

私は春のバッチで初心者で、私は使用する必要がある読者のためのパターンを決定することができません。クラスWSRequestClassを作成してSOAP Webサービスに送信する必要があります。 WSRequestClassを作成する春バッチ複合カスタムItemReader

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

が必要である:表Aから

  1. 読むdata1data2
  2. 読むdata3とテーブルBからdata4
  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 
        ... 
    } 
    

私は最も簡単なチャンクパターンとタスクレットのための複数の例を発見したが、どれも、この構造を、以下ません。このジョブでは、Java構成とJdbcTemplateを使用してクエリを実行します。それが完了したWebサービスの呼び出しの開発、私の唯一の問題は、複数のテーブルから読み取り、効率的にリストを読み取って、ClassBに各項目を変換し、WsRequestClassに設定する必要があるということです。

共通のItemReaderが私には役に立たないので、私はパターンを使用して案内してください。私は自分が望むことを可能にするカスタムリーダーをどのように実装するのか分かりません。

答えて

0

あなたはこれについて間違っていると思います。運転クエリパターンと呼ばれるバッチ処理のパターンがあります。その中で、読者は本質的にオブジェクトのキーを読む。その後、プロセッサを使用して追加情報を入力します。このパターンの詳細については、Spring Batchのドキュメントを参照してください。https://docs.spring.io/spring-batch/trunk/reference/html/patterns.html#drivingQueryBasedItemReaders

+0

ありがとうございました!リンクはパターンを明確にするのに非常に役立ちました!私が遭遇する唯一の障害は、 'WSRequestClass'の' dataList'を取得するためにDAOを呼び出すと、DAOの戻り値は 'ClassA'のリストです(これはDAOであるため変更できませんDAOを呼び出して 'List 'を 'List 'に変換する 'ServiceImpl'を作成しますが、これはFor文でリスト全体をループすることを意味します。春のバッチを利用してこれを行うためのより良い方法はありますか? – Mai

関連する問題