クラス AbstractRoutingDataSource
- 実装されているすべてのインターフェース:
WrapperSE、CommonDataSourceSE、DataSourceSE、InitializingBean
- 既知の直属サブクラス
IsolationLevelDataSourceRouter
getConnection() 呼び出しをルックアップキーに基づいてさまざまなターゲット DataSources の 1 つにルーティングする抽象 DataSourceSE 実装。後者は通常、スレッドにバインドされたトランザクションコンテキストを介して決定されます(必ずしもそうではありません)。フィールドのサマリー
クラス org.springframework.jdbc.datasource.AbstractDataSource から継承されたフィールド
loggerコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidinitialize()へのデリゲート。protected abstract ObjectSE現在の検索キーを決定します。protected DataSourceSE現在のターゲット DataSource を取得します。getConnection(StringSE username, StringSE password) このルーターが管理する解決済みのターゲット DataSources を返します。解決されたデフォルトのターゲット DataSource があれば、それを返します。void構成されたターゲット DataSources を解決することで、このAbstractRoutingDataSourceの内部状態を初期化します。booleanisWrapperFor(ClassSE<?> iface) protected DataSourceSEresolveSpecifiedDataSource(ObjectSE dataSourceObject) 指定されたデータソースオブジェクトを DataSource インスタンスに解決します。protected ObjectSEresolveSpecifiedLookupKey(ObjectSE lookupKey) targetDataSourcesマップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup keyとのマッチングに使用される実際のルックアップキーに解決します。voidsetDataSourceLookup(DataSourceLookup dataSourceLookup) targetDataSourcesマップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。voidsetDefaultTargetDataSource(ObjectSE defaultTargetDataSource) 存在する場合は、デフォルトのターゲット DataSource を指定します。voidsetLenientFallback(boolean lenientFallback) 現在のルックアップキーに対して特定の DataSource が見つからなかった場合、デフォルトの DataSource に寛大なフォールバックを適用するかどうかを指定します。voidsetTargetDataSources(MapSE<ObjectSE, ObjectSE> targetDataSources) 検索キーをキーとして、ターゲット DataSources のマップを指定します。<T> Tクラス org.springframework.jdbc.datasource.AbstractDataSource から継承されたメソッド
getLoginTimeout, getLogWriter, getParentLogger, setLoginTimeout, setLogWriter
コンストラクターの詳細
AbstractRoutingDataSource
public AbstractRoutingDataSource()
メソッドの詳細
setTargetDataSources
検索キーをキーとして、ターゲット DataSources のマップを指定します。マッピングされた値は、対応する
DataSourceSE インスタンスまたはデータソース名 String(DataSourceLookupを介して解決される)のいずれかです。キーは任意の型にすることができます。このクラスは、汎用ルックアッププロセスのみを実装します。具体的なキー表現は、
resolveSpecifiedLookupKey(Object)およびdetermineCurrentLookupKey()によって処理されます。setDefaultTargetDataSource
存在する場合は、デフォルトのターゲット DataSource を指定します。マッピングされた値は、対応する
DataSourceSE インスタンスまたはデータソース名 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)メソッドによって解決されるように、保存されているルックアップキー型と一致する必要があります。