3.0 および 4.0 間の変更

アプリケーションに影響する可能性のある重要な変更については、移行ガイド [GitHub] (英語) を参照してください。wiki [GitHub] (英語) で 2.1 に戻るすべてのバージョンの移行ガイドを見つけることができます。

新規コンポーネント

バージョン 4.0 は、多くの新しいコンポーネントを追加しました。

MQTT チャネルアダプター

MQTT チャネルアダプター(以前は Spring Integration Extensions リポジトリで利用可能)が、通常の Spring Integration ディストリビューションの一部として利用可能になりました。MQTT サポートを参照してください。

@EnableIntegration

@Configuration クラスを使用するときに標準 Spring Integration Bean の宣言を許可するために、@EnableIntegration アノテーションを追加しました。詳細については、アノテーションサポートを参照してください。

@IntegrationComponentScan

@IntegrationComponentScan アノテーションを追加して、Spring Integration 固有のコンポーネントのクラスパススキャンを許可しました。詳細については、アノテーションサポートを参照してください。

“@EnableMessageHistory”

@Configuration クラスの @EnableMessageHistory アノテーションを使用してメッセージ履歴を有効にできるようになりました。さらに、JMXMBean はメッセージ履歴設定を変更できます。また、MessageHistory は、アノテーション付きエンドポイント(@ServiceActivator@Splitter など)の自動作成された MessageHandler インスタンスを追跡できます。詳細については、メッセージ履歴を参照してください。

@MessagingGateway

メッセージングゲートウェイインターフェースを @MessagingGateway アノテーションで構成できるようになりました。これは、<int:gateway/> XML 要素の類似物です。詳細については、@MessagingGateway アノテーションを参照してください。

Spring Boot @EnableAutoConfiguration

前述の @EnableIntegration アノテーションに加えて、Spring Integration インフラストラクチャ Bean を Spring Boot の @EnableAutoConfiguration アノテーションで構成できるようにするフックを導入しました。詳細については、Spring Boot リファレンスガイドの “自動構成” を参照してください。

@GlobalChannelInterceptor

上記の @EnableIntegration アノテーションと同様に、@GlobalChannelInterceptor アノテーションを導入しました。詳細については、アノテーションサポートを参照してください。

@IntegrationConverter

<int:converter/> コンポーネントの類似物として @IntegrationConverter アノテーションを導入しました。詳細については、アノテーションサポートを参照してください。

@EnablePublisher

@EnablePublisher アノテーションを追加して、@Publisher アノテーションに default-publisher-channel を指定できるようにしました。詳細については、アノテーションサポートを参照してください。

Redis チャネルメッセージストア

永続性のために QueueChannel をバッキングするときに使用するために最適化された Redis MessageGroupStore を追加しました。詳細については、Redis チャネルメッセージストアを参照してください。

Redis ChannelPriorityMessageStore を追加しました。これを使用して、優先度ごとにメッセージを取得できます。詳細については、Redis チャネルメッセージストアを参照してください。

MongodDB チャネルメッセージストア

MongoDB サポートは、チャネル固有の MessageStore 実装である MongoDbChannelMessageStore を提供するようになりました。priorityEnabled = true では、<int:priority-queue> 要素でそれを使用して、持続メッセージの優先順位ポーリングを実現できます。詳細については、MongoDB チャネルメッセージストアを参照してください。

@EnableIntegrationMBeanExport

これで、@Configuration クラスで @EnableIntegrationMBeanExport アノテーションを使用して IntegrationMBeanExporter を有効にできます。詳細については、MBean エクスポーターを参照してください。

ChannelSecurityInterceptorFactoryBean

ChannelSecurityInterceptorFactoryBean は、@Configuration クラスを使用するメッセージチャネルの Spring Security の構成をサポートするようになりました。詳細については、Spring Integration のセキュリティを参照してください。

Redis コマンドゲートウェイ

Redis サポートは、RedisConnection#execute メソッドを使用して汎用 Redis コマンドを実行する <outbound-gateway> コンポーネントを提供するようになりました。詳細については、Redis 送信コマンドゲートウェイを参照してください。

RedisLockRegistry

RedisLockRegistry は、複数のアプリケーションインスタンスとサーバーから見えるグローバルロックをサポートするために利用できるようになりました。これらは、グループの解放が 1 つのインスタンスでのみ発生するように、複数のアプリケーションインスタンスにまたがる集約メッセージハンドラーで使用できます。詳細については、Redis ロックレジストリおよびアグリゲーターを参照してください。

@Poller

アノテーションベースのメッセージング構成で poller 属性を使用できるようになりました。これは、@ServiceActivator@Aggregator、同様のアノテーションが付けられたメソッドが、PollableChannel への参照である inputChannel を使用できることを意味します。詳細については、アノテーションサポートを参照してください。

アノテーション付きエンドポイントの @InboundChannelAdapter および SmartLifecycle 

@InboundChannelAdapter メソッドアノテーションを追加しました。これは、<int:inbound-channel-adapter> XML コンポーネントの類似物です。さらに、すべてのメッセージングアノテーションが SmartLifecycle オプションを提供するようになりました。詳細については、アノテーションサポートを参照してください。

Twitter Search Outbound Gateway

新しい twitter エンドポイント <int-twitter-search-outbound-gateway/> を追加しました。毎回同じ検索クエリを使用してポーリングする検索受信アダプターとは異なり、送信ゲートウェイではオンデマンドのカスタマイズされたクエリが許可されます。詳細については、Spring Integration ソーシャル Twitter [GitHub] (英語) を参照してください。

@BridgeFrom および @BridgeTo アノテーション

@Configuration クラスの MessageChannel Bean をマークするために、@BridgeFrom および @BridgeTo @Bean メソッドアノテーションを導入しました。詳細については、アノテーションサポートを参照してください。

メタメッセージングアノテーション

メッセージングアノテーション(@ServiceActivator@Router@MessagingGateway など)を、ユーザー定義のメッセージングアノテーションのメタアノテーションとして構成できるようになりました。さらに、ユーザー定義のアノテーションは同じ属性(inputChannel@PollerautoStartup など)を持つことができます。詳細については、アノテーションサポートを参照してください。

一般的な変更

このセクションでは、バージョン 3.0 からバージョン 4.0 への一般的な変更について説明します。

Spring Framework 4.0 が必要

コアメッセージングの抽象化(MessageMessageChannel など)を Spring Framework spring-messaging モジュールに移動しました。3.0 から 4.0 への移行ガイド [GitHub] (英語) の最初のセクションに従って、コードでこれらのクラスを直接参照する開発者は、変更を加える必要があります。

XPath ヘッダーエンリッチャーのヘッダー型

<int-xml:xpath-header-enricher> の header 子要素に header-type 属性を導入しました。この属性は、ヘッダー値のターゲット型を提供します(XPath 式評価の結果はこの値に変換されます)。詳細については、XPath ヘッダーエンリッチャーを参照してください。

オブジェクトから JSON への Transformer: ノード結果

<int:object-to-json-transformer> に result-type 属性を導入しました。この属性は、オブジェクトを JSON にマッピングした結果のターゲット型を提供します。STRING (デフォルト)および NODE をサポートします。詳細については、バージョン 3.0 以降、Spring Integration は式で使用するための組み込み #xpath SpEL 関数も提供します。を参照してください。

JMS ヘッダーマッピング

DefaultJmsHeaderMapper は、受信 JMSPriority ヘッダーを Spring Integration priority ヘッダーにマップするようになりました。以前は、priority は送信メッセージに対してのみ考慮されていました。詳細については、JMS メッセージとの間のメッセージヘッダーのマッピングを参照してください。

JMS 送信チャネルアダプター

JMS 発信チャネルアダプターは、session-transacted 属性をサポートするようになりました(デフォルト: false)。以前は、カスタマイズされた JmsTemplate を挿入してトランザクションを使用する必要がありました。送信チャネルアダプターを参照してください。

JMS 受信チャネルアダプター

JMS 受信チャネルアダプターは、session-transacted 属性をサポートするようになりました(デフォルト: false)。以前は、カスタマイズされた JmsTemplate を挿入してトランザクションを使用する必要がありました。アダプターは acknowledgeMode で「トランザクション」を許可しましたが、これは正しくなく、機能しませんでした。この値は許可されなくなりました。受信チャネルアダプターを参照してください。

データ型チャネル

(必要な場合)ペイロードをデータ型チャネルで受け入れられた datatype インスタンスの 1 つに変換するときに使用する MessageConverter を指定できるようになりました。詳細については、データ型チャネルの構成を参照してください。

より簡単な再試行アドバイス構成

RequestHandlerRetryAdvice を構成するための簡略化された名前空間サポートを追加しました。詳細については、再試行アドバイスの構成を参照してください。

相関エンドポイント: 時間ベースのリリース戦略

相互に排他的な group-timeout および group-timeout-expression 属性を <int:aggregator> および <int:resequencer> に追加しました。これらの属性により、ReleaseStrategy がグループを解放せず、指定された時間内にそれ以上メッセージが到着しない場合、部分的な MessageGroup を強制的に完了できます。詳細については、XML を使用したアグリゲーターの構成を参照してください。

Redis メタデータストア

RedisMetadataStore は ConcurrentMetadataStore を実装するようになり、たとえば、複数のアプリケーションインスタンスまたはサーバー環境の AbstractPersistentAcceptOnceFileListFilter 実装で使用できるようになりました。詳細については、Redis メタデータストアファイルを読むFTP 受信チャネルアダプターSFTP 受信チャネルアダプターを参照してください。

JdbcChannelMessageStore および PriorityChannel

T `JdbcChannelMessageStore` は PriorityCapableChannelMessageStore を実装するようになり、priority-queue インスタンスの message-store 参照として使用できるようになりました。詳細については、バッキングメッセージチャネルを参照してください。

AMQP エンドポイント配信モード

Spring AMQP は、デフォルトで、ブローカー上に永続メッセージを作成します。amqp_deliveryMode ヘッダーを設定するか、マッパーをカスタマイズすることにより、この動作をオーバーライドできます。この重要な設定を簡単に構成できるように、便利な default-delivery-mode 属性をアダプターに追加しました。詳細については、送信チャネルアダプターおよび送信ゲートウェイを参照してください。

FTP タイムアウト

DefaultFtpSessionFactory は connectTimeoutdefaultTimeoutdataTimeout プロパティを公開するようになり、これらの共通プロパティを設定するためにファクトリをサブクラス化する必要がなくなりました。postProcess* メソッドは、より高度な構成で引き続き使用できます。詳細については、FTP セッションファクトリを参照してください。

Twitter: StatusUpdatingMessageHandler

StatusUpdatingMessageHandler (<int-twitter:outbound-channel-adapter>)は、タイムラインステータスを更新するための org.springframework.social.twitter.api.TweetData オブジェクトを作成するために tweet-data-expression 属性をサポートするようになりました。この機能により、たとえばイメージを添付できます。詳細については、Spring Integration ソーシャル Twitter [GitHub] (英語) を参照してください。

JPA 取得ゲートウェイ: id-expression

EntityManager.find(Class entityClass, Object primaryKey) を実行するために、<int-jpa:retrieving-outbound-gateway> に id-expression 属性を導入しました。詳細については、送信ゲートウェイの取得を参照してください。

TCP 逆直列化イベント

標準デシリアライザーの 1 つが入力ストリームをメッセージにデコードする際に問題を検出すると、TcpDeserializationExceptionEvent を出力するようになり、例外が発生したポイントでアプリケーションがデータを検査できるようになりました。詳細については、TCP 接続イベントを参照してください。

@Bean 定義のメッセージングアノテーション

@Configuration クラスの @Bean 定義でメッセージングアノテーション(@ServiceActivator@Router@InboundChannelAdapter など)を構成できるようになりました。詳細については、アノテーションサポートを参照してください。