クラス JdbcMessageHandler
java.lang.ObjectSE
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.jdbc.outbound.JdbcMessageHandler
- 実装済みのインターフェース一覧:
org.reactivestreams.Subscriber<Message<?>>, Aware, BeanFactoryAware, BeanNameAware, DisposableBean, InitializingBean, ApplicationContextAware, Ordered, ComponentSourceAware, ExpressionCapable, Orderable, IntegrationPattern, NamedComponent, IntegrationManagement, TrackableComponent, MessageHandler, reactor.core.CoreSubscriber<Message<?>>
SQL 更新を実行するメッセージハンドラー。動的クエリパラメーターは、
SqlParameterSourceFactory 抽象化を通じてサポートされます。SqlParameterSourceFactory のデフォルト実装は、メッセージをラップして、その Bean プロパティをクエリ文字列で名前で参照できるようにします。INSERT INTO ITEMS (MESSAGE_ID, PAYLOAD) VALUES (:headers[id], :payload)
メッセージペイロードが IterableSE のインスタンスである場合、NamedParameterJdbcOperations.batchUpdate(String, SqlParameterSource[]) が実行されます。各 SqlParameterSource インスタンスは、リクエストメッセージのヘッダーを使用して内部 Message 実装にラップされた項目に基づいています。項目はまだ Message でない場合のみ折り返しされます。
preparedStatementSetter が構成されている場合、適切な JdbcOperations.batchUpdate(String, BatchPreparedStatementSetter) 機能の各項目に適用されます。
NOTE: keysGenerated が使用されている場合、バッチ更新はサポートされません。
N.B. ヘッダーキーをエスケープするために引用符を使用しないでください。デフォルトの SQL パラメーターソース(Spring JDBC から)は、ドット付きの名前のヘッダーも処理できます (たとえば business.id)
- 導入:
- 2.0
- 作成者:
- Dave Syer, Artem Bilan, Trung Pham
ネストされたクラスの概要
インターフェース IntegrationManagement から継承されたネストクラス / インターフェース
IntegrationManagement.ManagementOverridesフィールド概要
クラス IntegrationObjectSupport から継承されたフィールド
EXPRESSION_PARSER, loggerインターフェース IntegrationManagement から継承されたフィールド
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAMEインターフェース Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクター概要
コンストラクターコンストラクター説明JdbcMessageHandler(DataSourceSE dataSource, StringSE updateSql) DB 接続を取得できるDataSourceSE と、新しい行を取得するために実行する選択クエリを取得するコンストラクター。JdbcMessageHandler(JdbcOperations jdbcOperations, StringSE updateSql) クエリの実行に使用するJdbcOperationsインスタンスと、新しい行を取得するために実行する選択クエリを取得するコンストラクター。方法の概要
修飾子と型メソッド説明executeUpdateQuery(Message<?> message, boolean keysGenerated) 提供されたメッセージと生成されたキーフラグの更新を実行します。protected voidhandleMessageInternal(Message<?> message) 更新を実行し、メッセージをSqlParameterSourceFactoryに渡します。protected voidonInit()サブクラスは、初期化ロジック用にこれを実装できます。voidsetKeysGenerated(boolean keysGenerated) 更新クエリが自動生成キーを使用した挿入であることを示すフラグ。デバッグレベルでログに記録されます。voidsetPreparedStatementSetter(@Nullable MessagePreparedStatementSetter preparedStatementSetter) voidsetSqlParameterSourceFactory(SqlParameterSourceFactory sqlParameterSourceFactory) SqlParameterSourceFactoryを構成します。voidsetUsePayloadAsParameterSource(boolean usePayloadAsParameterSource) "true" に設定すると、メッセージのペイロードがパラメーターを提供するためのソースとして使用されます。クラス AbstractMessageHandler から継承されたメソッド
handleMessage, onComplete, onError, onNext, onSubscribe, setObservationConventionクラス MessageHandlerSupport から継承されたメソッド
buildSendTimer, destroy, getIntegrationPatternType, getManagedName, getManagedType, getMetricsCaptor, getObservationRegistry, getOrder, getOverrides, isLoggingEnabled, isObserved, registerMetricsCaptor, registerObservationRegistry, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrackクラス IntegrationObjectSupport から継承されたメソッド
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSEインターフェース reactor.core.CoreSubscriber から継承されたメソッド
currentContextインターフェース IntegrationManagement から継承されたメソッド
getThisAsインターフェース NamedComponent から継承されたメソッド
getBeanName, getComponentName
コンストラクターの詳細
JdbcMessageHandler
DB 接続を取得できるDataSourceSE と、新しい行を取得するために実行する選択クエリを取得するコンストラクター。- パラメーター:
dataSource- null であってはなりませんupdateSql- 実行するクエリ
JdbcMessageHandler
クエリの実行に使用するJdbcOperationsインスタンスと、新しい行を取得するために実行する選択クエリを取得するコンストラクター。- パラメーター:
jdbcOperations- クエリの実行に使用するインスタンスupdateSql- 実行するクエリ
方法の詳細
setKeysGenerated
public void setKeysGenerated(boolean keysGenerated) 更新クエリが自動生成キーを使用した挿入であることを示すフラグ。デバッグレベルでログに記録されます。- パラメーター:
keysGenerated- 設定するフラグ値
setSqlParameterSourceFactory
SqlParameterSourceFactoryを構成します。- パラメーター:
sqlParameterSourceFactory- 使用するSqlParameterSourceFactory。
setUsePayloadAsParameterSource
public void setUsePayloadAsParameterSource(boolean usePayloadAsParameterSource) "true" に設定すると、メッセージのペイロードがパラメーターを提供するためのソースとして使用されます。false の場合、Message全体がパラメーターのソースとして使用できます。setPreparedStatementSetter(MessagePreparedStatementSetter)が提供されていない場合にのみ意味があります。- パラメーター:
usePayloadAsParameterSource- パラメーターソースとしてのMessage全体に対して false です。
setPreparedStatementSetter
public void setPreparedStatementSetter(@Nullable MessagePreparedStatementSetter preparedStatementSetter) MessagePreparedStatementSetterを指定して、PreparedStatementSE のパラメーターにMessageコンテキストを設定します。これは
SqlParameterSourceFactoryの低レベルの代替です。- パラメーター:
preparedStatementSetter- 設定するMessagePreparedStatementSetter
getComponentType
- 次で指定:
- インターフェース
NamedComponent内のgetComponentType - オーバーライド:
- クラス
MessageHandlerSupportのgetComponentType
onInit
protected void onInit()クラスからコピーされた説明:IntegrationObjectSupportサブクラスは、初期化ロジック用にこれを実装できます。- オーバーライド:
- クラス
IntegrationObjectSupportのonInit
handleMessageInternal
更新を実行し、メッセージをSqlParameterSourceFactoryに渡します。- 次で指定:
- クラス
AbstractMessageHandlerのhandleMessageInternal
executeUpdateQuery