2017-02-07 8 views
0

を動作していない再利用、それは言う:サービスアクティベーターは、サービス活性化ドキュメントで

カスタムサービスアクティベーターハンドラの実装は他の定義で再利用することができた場合、「参照」属性が一般的に推奨される使用します。

しかし、以下のスニペットは、私に

はIllegalArgumentException与える:私はそれが動作するプロトタイプに私のBean定義を変更するとAbstractReplyProducingMessageHandlerは一度だけ

<bean id="groupResequencer" class="com.core.flow.GroupResequencer"/> 
<int:service-activator id="groupResequencer1" ref="groupResequencer"/> 
<int:service-activator id="groupResequencer2" ref="groupResequencer"/> 

参照することができるが、onInit()方法をコンポーネント名として2回、汎用コンポーネント名で2回、スプリング統合サービスアクティベータIDで2回呼び出されます。

Beanがシングルトンであるかプロトタイプであるかは問題ではありませんが、一度だけ発生するクリーンな作成が必要です。

答えて

0

このドキュメントを改善する必要があります。これは、refがPOJOを参照している場合にのみ適用されます。

しばらく前に、ref beanがAbstractReplyProducingMessageHandlerである場合、そのオーバーヘッドを避けるために、新しいハンドラーでラップするのではなく直接参照するように、サービスアクティベータに最適化を追加しました。

このようなBeanは1つしか持たないため、複数のエンドポイントで使用することはできません。outputChannelそれをプロトタイプ化することは、各サービスアクティベータが独自のインスタンスを取得することを意味します。

ARPMHから拡張するのではなく、POJOにBeanを変更した場合、その方法で再利用できます。

+0

ご清聴ありがとうございます! –

関連する問題