2017-09-28 13 views
1

多くの場合、統合フローで膨大な役割を果たしている.handle("someBean", "someMethod") EIPメソッドを見てきました。私はそれが以前のXML ConfigのService Activatorであることを理解できますが、このBeanの作成方法と、someMethodが返すものについて明確にする必要があります。また、どの場合に.handle(...)を使用する必要がありますか?多分Java DSLを使った完成した例が私にとってはうまくいくはずです。Spring統合Java DSL .handle(String beanName、String methodName)

答えて

1

正しく認識されたように、.handle("someBean", "someMethod")<int:service-activator ref="someBean" method="someMethod"/>https://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#service-activator-namespaceと完全に等しいです。

これは、someMethodにサービス呼び出しの定義がsomeBeanであることを意味します。例えば、あなたは、大文字に着信メッセージの​​を変換し、結果を返すために、単純なロジックを実行する必要があります

class MyService { 

    public String someMethod(String payload) { 
     return payload.toUpperCase(); 
    } 

} 

このメソッドの戻り値は、次のEIPエンドポイントへの送信メッセージでの​​ようになりますあなたのIntegrationFlow定義。

リファレンスマニュアルに記載されている内容は、すべてJava DSLに完全に当てはまります。特に<service-activator>または@ServiceActivatorのすべての規則がこの.handle()に適用されます。

+0

すぐに回答いただきありがとうございます。 'someMethod'に' @ Bean'で注釈を付ける必要はありますか?また、私は変換EIPメソッドで同じロジックを実行できます。したがって、 '.handle(...)'の使用法の別の例を挙げることができますか?どの場合、 '.handle(...)'を厳密に使用しなければならないのですか? –

+0

いいえ、私は豆のためだけに '@ Bean'を必要とします。 beanのメソッドを '@Configuration'ファイルに追加します。あなたはすでに 'someBean'をbeanとして持っています。サービスメソッドには、注釈が完全になくてもかまいません。 '.transform()'の矛盾した '.handle()'のもう一つのサンプルはあなたのメソッドからの 'JdbcTemplate'の直接使用に似ています。そうです、変圧器でも可能ですが、適切なコンポーネント間でロジックを区別する方が良いでしょう。それが変換に関するものでなければ、 '.handle()'があなたのためです!さらに、 '.handle()'は返信を要求しませんが、 '.transform()'は返答を要求しません。 –

関連する問題