public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean
getConnection() 呼び出しをさまざまなターゲット DataSources のいずれかにルーティングする抽象 DataSource 実装。後者は通常(必ずというわけではありませんが)スレッドにバインドされたトランザクションコンテキストによって決定されます。setTargetDataSources(java.util.Map<java.lang.Object, java.lang.Object>), setDefaultTargetDataSource(java.lang.Object), determineCurrentLookupKey()logger| コンストラクターと説明 |
|---|
AbstractRoutingDataSource() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | afterPropertiesSet() |
protected abstract java.lang.Object | determineCurrentLookupKey() 現在の検索キーを決定します。 |
protected javax.sql.DataSource | determineTargetDataSource() 現在のターゲット DataSource を取得します。 |
java.sql.Connection | getConnection() |
java.sql.Connection | getConnection(java.lang.String username, java.lang.String password) |
boolean | isWrapperFor(java.lang.Class<?> iface) |
protected javax.sql.DataSource | resolveSpecifiedDataSource(java.lang.Object dataSource) 指定されたデータソースオブジェクトを DataSource インスタンスに解決します。 |
protected java.lang.Object | resolveSpecifiedLookupKey(java.lang.Object lookupKey)targetDataSources マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key とのマッチングに使用される実際のルックアップキーに解決します。 |
void | setDataSourceLookup(DataSourceLookup dataSourceLookup)targetDataSources マップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。 |
void | setDefaultTargetDataSource(java.lang.Object defaultTargetDataSource) 存在する場合は、デフォルトのターゲット DataSource を指定します。 |
void | setLenientFallback(boolean lenientFallback) 現在のルックアップキーに対して特定の DataSource が見つからなかった場合、デフォルトの DataSource に寛大なフォールバックを適用するかどうかを指定します。 |
void | setTargetDataSources(java.util.Map<java.lang.Object,java.lang.Object> targetDataSources) 検索キーをキーとして、ターゲット DataSources のマップを指定します。 |
<T> T | unwrap(java.lang.Class<T> iface) |
getLoginTimeout, getLogWriter, getParentLogger, setLoginTimeout, setLogWriterpublic void setTargetDataSources(java.util.Map<java.lang.Object,java.lang.Object> targetDataSources)
DataSource インスタンスまたはデータソース名文字列(DataSourceLookup を介して解決される)のいずれかです。 キーは任意の型にすることができます。このクラスは、汎用ルックアッププロセスのみを実装します。具体的なキー表現は、resolveSpecifiedLookupKey(Object) および determineCurrentLookupKey() によって処理されます。
public void setDefaultTargetDataSource(java.lang.Object defaultTargetDataSource)
マップされた値は、対応する DataSource インスタンスまたはデータソース名文字列(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()
InitializingBeanBeanFactoryAware、ApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean 内の afterPropertiesSet protected java.lang.Object resolveSpecifiedLookupKey(java.lang.Object lookupKey)
targetDataSources マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key とのマッチングに使用される実際のルックアップキーに解決します。デフォルトの実装は、指定されたキーをそのまま返すだけです。
lookupKey - ユーザーが指定したルックアップキーオブジェクト protected javax.sql.DataSource resolveSpecifiedDataSource(java.lang.Object dataSource)
throws java.lang.IllegalArgumentException デフォルトの実装は、DataSource インスタンスとデータソース名を処理します(DataSourceLookup を介して解決されます)。
dataSource - targetDataSources マップで指定されたデータソース値オブジェクト null ではない)java.lang.IllegalArgumentException - サポートされていない値型の場合 public java.sql.Connection getConnection()
throws java.sql.SQLExceptionjavax.sql.DataSource 内の getConnection java.sql.SQLExceptionpublic java.sql.Connection getConnection(java.lang.String username,
java.lang.String password)
throws java.sql.SQLExceptionjavax.sql.DataSource 内の getConnection java.sql.SQLExceptionpublic <T> T unwrap(java.lang.Class<T> iface)
throws java.sql.SQLExceptionjava.sql.Wrapper 内の unwrap AbstractDataSource の unwrap java.sql.SQLExceptionpublic boolean isWrapperFor(java.lang.Class<?> iface)
throws java.sql.SQLExceptionjava.sql.Wrapper 内の isWrapperFor AbstractDataSource の isWrapperFor java.sql.SQLExceptionprotected javax.sql.DataSource determineTargetDataSource()
current lookup key を決定し、targetDataSources マップで検索を実行し、必要に応じて指定された default target DataSource にフォールバックします。@Nullable protected abstract java.lang.Object determineCurrentLookupKey()
任意のキーを許可します。返されるキーは、resolveSpecifiedLookupKey(java.lang.Object) メソッドによって解決されるように、保存されているルックアップキー型と一致する必要があります。