クラス AbstractRoutingDataSource
- 実装されたすべてのインターフェース:
WrapperSE
、CommonDataSourceSE
、DataSourceSE
、InitializingBean
- 既知の直属サブクラス
IsolationLevelDataSourceRouter
getConnection()
呼び出しをルックアップキーに基づいてさまざまなターゲット DataSources の 1 つにルーティングする抽象 DataSource
SE 実装。後者は通常、スレッドにバインドされたトランザクションコンテキストを介して決定されます(必ずしもそうではありません)。フィールドのサマリー
クラス org.springframework.jdbc.datasource.AbstractDataSource から継承されたフィールド
logger
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
initialize()
へのデリゲート。protected abstract ObjectSE
現在の検索キーを決定します。protected DataSourceSE
現在のターゲット DataSource を取得します。getConnection
(StringSE username, StringSE password) このルーターが管理する解決済みのターゲット DataSources を返します。解決されたデフォルトのターゲット DataSource があれば、それを返します。void
構成されたターゲット DataSources を解決することで、このAbstractRoutingDataSource
の内部状態を初期化します。boolean
isWrapperFor
(ClassSE<?> iface) protected DataSourceSE
resolveSpecifiedDataSource
(ObjectSE dataSourceObject) 指定されたデータソースオブジェクトを DataSource インスタンスに解決します。protected ObjectSE
resolveSpecifiedLookupKey
(ObjectSE lookupKey) targetDataSources
マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key
とのマッチングに使用される実際のルックアップキーに解決します。void
setDataSourceLookup
(DataSourceLookup dataSourceLookup) targetDataSources
マップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。void
setDefaultTargetDataSource
(ObjectSE defaultTargetDataSource) 存在する場合は、デフォルトのターゲット DataSource を指定します。void
setLenientFallback
(boolean lenientFallback) 現在のルックアップキーに対して特定の DataSource が見つからなかった場合、デフォルトの DataSource に寛大なフォールバックを適用するかどうかを指定します。void
setTargetDataSources
(MapSE<ObjectSE, ObjectSE> targetDataSources) 検索キーをキーとして、ターゲット DataSources のマップを指定します。<T> T
クラス org.springframework.jdbc.datasource.AbstractDataSource から継承されたメソッド
getLoginTimeout, getLogWriter, getParentLogger, setLoginTimeout, setLogWriter
コンストラクターの詳細
AbstractRoutingDataSource
public AbstractRoutingDataSource()
メソッドの詳細
setTargetDataSources
検索キーをキーとして、ターゲット DataSources のマップを指定します。マッピングされた値は、対応する
DataSource
SE インスタンスまたはデータソース名 String(DataSourceLookup
を介して解決される)のいずれかです。キーは任意の型にすることができます。このクラスは、汎用ルックアッププロセスのみを実装します。具体的なキー表現は、
resolveSpecifiedLookupKey(Object)
およびdetermineCurrentLookupKey()
によって処理されます。setDefaultTargetDataSource
存在する場合は、デフォルトのターゲット DataSource を指定します。マッピングされた値は、対応する
DataSource
SE インスタンスまたはデータソース名 String(DataSourceLookup
を介して解決される)のいずれかです。キー設定された
targetDataSources
のいずれもdetermineCurrentLookupKey()
の現在のルックアップキーと一致しない場合、この DataSource がターゲットとして使用されます。setLenientFallback
public void setLenientFallback(boolean lenientFallback) 現在のルックアップキーに対して特定の DataSource が見つからなかった場合、デフォルトの DataSource に寛大なフォールバックを適用するかどうかを指定します。デフォルトは "true" であり、ターゲット DataSource マップに対応するエントリのないルックアップキーを受け入れます。その場合、デフォルトの DataSource に単純にフォールバックします。
ルックアップキーが
null
の場合にのみフォールバックを適用する場合は、このフラグを "false" に切り替えます。DataSource エントリのないルックアップキーは、IllegalStateException につながります。setDataSourceLookup
targetDataSources
マップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。デフォルトは
JndiDataSourceLookup
で、アプリケーションサーバー DataSources の JNDI 名を直接指定できます。afterPropertiesSet
public void afterPropertiesSet()initialize()
へのデリゲート。- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
initialize
public void initialize()構成されたターゲット DataSources を解決することで、このAbstractRoutingDataSource
の内部状態を初期化します。- 例外:
IllegalArgumentExceptionSE
- ターゲット DataSources が設定されていない場合- 導入:
- 6.1
- 関連事項:
resolveSpecifiedLookupKey
targetDataSources
マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key
とのマッチングに使用される実際のルックアップキーに解決します。デフォルトの実装は、指定されたキーをそのまま返すだけです。
- パラメーター:
lookupKey
- ユーザーが指定したルックアップキーオブジェクト- 戻り値:
- マッチングに必要なルックアップキー
resolveSpecifiedDataSource
protected DataSourceSE resolveSpecifiedDataSource(ObjectSE dataSourceObject) throws IllegalArgumentExceptionSE 指定されたデータソースオブジェクトを DataSource インスタンスに解決します。デフォルトの実装は、DataSource インスタンスとデータソース名を処理します(
DataSourceLookup
を介して解決されます)。- パラメーター:
dataSourceObject
-targetDataSources
マップで指定されたデータソース値オブジェクト- 戻り値:
- 解決された DataSource (非
null
) - 例外:
IllegalArgumentExceptionSE
- サポートされていない値型の場合
getResolvedDataSources
このルーターが管理する解決済みのターゲット DataSources を返します。- 戻り値:
- 解決されたルックアップキーと DataSources の変更不可能なマップ
- 例外:
IllegalStateExceptionSE
- ターゲット DataSources がまだ解決されていない場合- 導入:
- 5.2.9
- 関連事項:
getResolvedDefaultDataSource
解決されたデフォルトのターゲット DataSource があれば、それを返します。- 戻り値:
- デフォルトの DataSource、またはまだ解決されていないか解決されていない場合は
null
- 導入:
- 5.2.9
- 関連事項:
getConnection
- 次で指定:
- インターフェース
DataSourceSE
のgetConnection
- 例外:
SQLExceptionSE
getConnection
- 次で指定:
- インターフェース
DataSourceSE
のgetConnectionSE
- 例外:
SQLExceptionSE
createConnectionBuilder
- 次で指定:
- インターフェース
DataSourceSE
のcreateConnectionBuilder
- 例外:
SQLExceptionSE
createShardingKeyBuilder
- 次で指定:
- インターフェース
CommonDataSourceSE
のcreateShardingKeyBuilder
- 例外:
SQLExceptionSE
unwrap
- 次で指定:
- インターフェース
WrapperSE
のunwrapSE
- オーバーライド:
- クラス
AbstractDataSource
のunwrap
- 例外:
SQLExceptionSE
isWrapperFor
- 次で指定:
- インターフェース
WrapperSE
のisWrapperForSE
- オーバーライド:
- クラス
AbstractDataSource
のisWrapperFor
- 例外:
SQLExceptionSE
determineTargetDataSource
現在のターゲット DataSource を取得します。current lookup key
を決定し、targetDataSources
マップで検索を実行し、必要に応じて指定されたdefault target DataSource
にフォールバックします。determineCurrentLookupKey
現在の検索キーを決定します。これは通常、スレッドにバインドされたトランザクションコンテキストをチェックするために実装されます。任意のキーを許可します。返されるキーは、
resolveSpecifiedLookupKey(java.lang.Object)
メソッドによって解決されるように、保存されているルックアップキー型と一致する必要があります。