public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean
getConnection()
呼び出しをルックアップキーに基づいてさまざまなターゲット DataSources の 1 つにルーティングする抽象 DataSource
SE 実装。後者は通常、スレッドにバインドされたトランザクションコンテキストを介して決定されます(必ずしもそうではありません)。setTargetDataSources(java.util.Map<java.lang.Object, java.lang.Object>)
, setDefaultTargetDataSource(java.lang.Object)
, determineCurrentLookupKey()
logger
コンストラクターと説明 |
---|
AbstractRoutingDataSource() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected abstract ObjectSE | determineCurrentLookupKey() 現在の検索キーを決定します。 |
protected DataSourceSE | determineTargetDataSource() 現在のターゲット DataSource を取得します。 |
ConnectionSE | getConnection() |
ConnectionSE | getConnection(StringSE username, StringSE password) |
boolean | isWrapperFor(ClassSE<?> iface) |
protected DataSourceSE | resolveSpecifiedDataSource(ObjectSE dataSource) 指定されたデータソースオブジェクトを 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 | unwrap(ClassSE<T> iface) |
getLoginTimeout, getLogWriter, getParentLogger, setLoginTimeout, setLogWriter
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setTargetDataSources(MapSE<ObjectSE,ObjectSE> targetDataSources)
DataSource
SE インスタンスまたはデータソース名 String(DataSourceLookup
を介して解決される)のいずれかです。 キーは任意の型にすることができます。このクラスは、汎用ルックアッププロセスのみを実装します。具体的なキー表現は、resolveSpecifiedLookupKey(Object)
および determineCurrentLookupKey()
によって処理されます。
public void setDefaultTargetDataSource(ObjectSE defaultTargetDataSource)
マッピングされた値は、対応する DataSource
SE インスタンスまたはデータソース名 String(DataSourceLookup
を介して解決される)のいずれかです。
キー設定された targetDataSources
のいずれも determineCurrentLookupKey()
の現在のルックアップキーと一致しない場合、この DataSource がターゲットとして使用されます。
public void setLenientFallback(boolean lenientFallback)
デフォルトは "true" であり、ターゲット DataSource マップに対応するエントリのないルックアップキーを受け入れます。その場合、デフォルトの DataSource に単純にフォールバックします。
ルックアップキーが null
の場合にのみフォールバックを適用する場合は、このフラグを "false" に切り替えます。DataSource エントリのないルックアップキーは、IllegalStateException につながります。
public void setDataSourceLookup(@Nullable DataSourceLookup dataSourceLookup)
targetDataSources
マップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。 デフォルトは JndiDataSourceLookup
で、アプリケーションサーバー DataSources の JNDI 名を直接指定できます。
public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
protected ObjectSE resolveSpecifiedLookupKey(ObjectSE lookupKey)
targetDataSources
マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key
とのマッチングに使用される実際のルックアップキーに解決します。デフォルトの実装は、指定されたキーをそのまま返すだけです。
lookupKey
- ユーザーが指定したルックアップキーオブジェクト protected DataSourceSE resolveSpecifiedDataSource(ObjectSE dataSource) throws IllegalArgumentExceptionSE
デフォルトの実装は、DataSource インスタンスとデータソース名を処理します(DataSourceLookup
を介して解決されます)。
dataSource
- targetDataSources
マップで指定されたデータソース値オブジェクト null
)IllegalArgumentExceptionSE
- サポートされていない値型の場合 public ConnectionSE getConnection() throws SQLExceptionSE
DataSourceSE
の getConnectionSE
SQLExceptionSE
public ConnectionSE getConnection(StringSE username, StringSE password) throws SQLExceptionSE
DataSourceSE
の getConnectionSE
SQLExceptionSE
public <T> T unwrap(ClassSE<T> iface) throws SQLExceptionSE
WrapperSE
の unwrapSE
AbstractDataSource
の unwrap
SQLExceptionSE
public boolean isWrapperFor(ClassSE<?> iface) throws SQLExceptionSE
WrapperSE
の isWrapperForSE
AbstractDataSource
の isWrapperFor
SQLExceptionSE
protected DataSourceSE determineTargetDataSource()
current lookup key
を決定し、targetDataSources
マップで検索を実行し、必要に応じて指定された default target DataSource
にフォールバックします。@Nullable protected abstract ObjectSE determineCurrentLookupKey()
任意のキーを許可します。返されるキーは、resolveSpecifiedLookupKey(java.lang.Object)
メソッドによって解決されるように、保存されているルックアップキー型と一致する必要があります。