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
、@Poller
、autoStartup
など)を持つことができます。詳細については、アノテーションサポートを参照してください。
一般的な変更
このセクションでは、バージョン 3.0 からバージョン 4.0 への一般的な変更について説明します。
Spring Framework 4.0 が必要
コアメッセージングの抽象化(Message
、MessageChannel
など)を 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
は connectTimeout
、defaultTimeout
、dataTimeout
プロパティを公開するようになり、これらの共通プロパティを設定するためにファクトリをサブクラス化する必要がなくなりました。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
など)を構成できるようになりました。詳細については、アノテーションサポートを参照してください。