2017-06-12 16 views
1

私は一般的な質問があります。古いコードをv4.1.3のspring-integrationにアップグレードしています。 Foo型のドメインオブジェクトを受け取って、同じオブジェクトを(そのオブジェクトのいくつかのプロパティを変更した後に)出力チャンネルに返すサービスアクティベータがあるとしましょう。春の統合 - サービスアクティベータ - メソッドシグネチャ

既存のコードには、以下のような署名があります。それは正しい大会ですか?私は、ヘッダーを必要としない場合は、私が直接自分のペイロードを返すことができますし、フレームワークは、メッセージにそれをラップする?:

public Message<Foo> computeValue(Foo payload, @Headers Map<String, Object> headerMap) { 
    //... 
    return MessageBuilder.withPayload(payload).copyHeaders(headerMap).build(); 
} 

答えて

1

はい、あなたはそれを行う必要はありません。それ以上のことは無意味です。なぜならService Activatorの場合、Frameworkはあなたの努力とは無関係に応答メッセージにリクエストヘッダを設定するからです。

したがって、問題に関して特定のロジックを行う必要がない場合は、ヘッダーはまったく気にしないでください。

+1

ありがとう、もう一度Artem、いつものように!あなたが私の理解のために言ったことを繰り返すには、単に「リターンペイロード」を実行するだけです。フレームワークは依然としてすべてのヘッダーを保持し、ペイロードをメッセージに変換します。 – code4kix

+0

変換しないで折り返します。あなたのオブジェクトを返信メッセージの 'ペイロード'にする –