クラス AbstractRoutingDataSource

java.lang.ObjectSE
org.springframework.jdbc.datasource.AbstractDataSource
org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource
実装されたすべてのインターフェース:
WrapperSECommonDataSourceSEDataSourceSEInitializingBean
既知の直属サブクラス
IsolationLevelDataSourceRouter

public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean
getConnection() 呼び出しをルックアップキーに基づいてさまざまなターゲット DataSources の 1 つにルーティングする抽象 DataSourceSE 実装。後者は通常、スレッドにバインドされたトランザクションコンテキストを介して決定されます(必ずしもそうではありません)。
導入:
2.0.1
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • AbstractRoutingDataSource

      public AbstractRoutingDataSource()
  • メソッドの詳細

    • setTargetDataSources

      public void setTargetDataSources(MapSE<ObjectSE,ObjectSE> targetDataSources)
      検索キーをキーとして、ターゲット DataSources のマップを指定します。マッピングされた値は、対応する DataSourceSE インスタンスまたはデータソース名 String(DataSourceLookup を介して解決される)のいずれかです。

      キーは任意の型にすることができます。このクラスは、汎用ルックアッププロセスのみを実装します。具体的なキー表現は、resolveSpecifiedLookupKey(Object) および determineCurrentLookupKey() によって処理されます。

    • setDefaultTargetDataSource

      public void setDefaultTargetDataSource(ObjectSE defaultTargetDataSource)
      存在する場合は、デフォルトのターゲット DataSource を指定します。

      マッピングされた値は、対応する DataSourceSE インスタンスまたはデータソース名 String(DataSourceLookup を介して解決される)のいずれかです。

      キー設定された targetDataSources のいずれも determineCurrentLookupKey() の現在のルックアップキーと一致しない場合、この DataSource がターゲットとして使用されます。

    • setLenientFallback

      public void setLenientFallback(boolean lenientFallback)
      現在のルックアップキーに対して特定の DataSource が見つからなかった場合、デフォルトの DataSource に寛大なフォールバックを適用するかどうかを指定します。

      デフォルトは "true" であり、ターゲット DataSource マップに対応するエントリのないルックアップキーを受け入れます。その場合、デフォルトの DataSource に単純にフォールバックします。

      ルックアップキーが null の場合にのみフォールバックを適用する場合は、このフラグを "false" に切り替えます。DataSource エントリのないルックアップキーは、IllegalStateException につながります。

      関連事項:
    • setDataSourceLookup

      public void setDataSourceLookup(@Nullable DataSourceLookup dataSourceLookup)
      targetDataSources マップのデータソース名文字列の解決に使用する DataSourceLookup 実装を設定します。

      デフォルトは JndiDataSourceLookup で、アプリケーションサーバー DataSources の JNDI 名を直接指定できます。

    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • resolveSpecifiedLookupKey

      protected ObjectSE resolveSpecifiedLookupKey(ObjectSE lookupKey)
      targetDataSources マップで指定されているように、指定されたルックアップキーオブジェクトを、current lookup key とのマッチングに使用される実際のルックアップキーに解決します。

      デフォルトの実装は、指定されたキーをそのまま返すだけです。

      パラメーター:
      lookupKey - ユーザーが指定したルックアップキーオブジェクト
      戻り値:
      マッチングに必要なルックアップキー
    • resolveSpecifiedDataSource

      protected DataSourceSE resolveSpecifiedDataSource(ObjectSE dataSourceObject) throws IllegalArgumentExceptionSE
      指定されたデータソースオブジェクトを DataSource インスタンスに解決します。

      デフォルトの実装は、DataSource インスタンスとデータソース名を処理します(DataSourceLookup を介して解決されます)。

      パラメーター:
      dataSourceObject - targetDataSources マップで指定されたデータソース値オブジェクト
      戻り値:
      解決された DataSource (非 null)
      例外:
      IllegalArgumentExceptionSE - サポートされていない値型の場合
    • getResolvedDataSources

      public MapSE<ObjectSE,DataSourceSE> getResolvedDataSources()
      このルーターが管理する解決済みのターゲット DataSources を返します。
      戻り値:
      解決されたルックアップキーと DataSources の変更不可能なマップ
      例外:
      IllegalStateExceptionSE - ターゲット DataSources がまだ解決されていない場合
      導入:
      5.2.9
      関連事項:
    • getResolvedDefaultDataSource

      @Nullable public DataSourceSE getResolvedDefaultDataSource()
      解決されたデフォルトのターゲット DataSource があれば、それを返します。
      戻り値:
      デフォルトの DataSource、またはまだ解決されていないか解決されていない場合は null 
      導入:
      5.2.9
      関連事項:
    • getConnection

      public ConnectionSE getConnection() throws SQLExceptionSE
      次で指定:
      インターフェース DataSourceSEgetConnection 
      例外:
      SQLExceptionSE
    • getConnection

      public ConnectionSE getConnection(StringSE username, StringSE password) throws SQLExceptionSE
      次で指定:
      インターフェース DataSourceSEgetConnectionSE 
      例外:
      SQLExceptionSE
    • unwrap

      public <T> T unwrap(ClassSE<T> iface) throws SQLExceptionSE
      次で指定:
      インターフェース WrapperSEunwrapSE 
      オーバーライド:
      クラス AbstractDataSourceunwrap 
      例外:
      SQLExceptionSE
    • isWrapperFor

      public boolean isWrapperFor(ClassSE<?> iface) throws SQLExceptionSE
      次で指定:
      インターフェース WrapperSEisWrapperForSE 
      オーバーライド:
      クラス AbstractDataSourceisWrapperFor 
      例外:
      SQLExceptionSE
    • determineTargetDataSource

      protected DataSourceSE determineTargetDataSource()
      現在のターゲット DataSource を取得します。current lookup key を決定し、targetDataSources マップで検索を実行し、必要に応じて指定された default target DataSource にフォールバックします。
      関連事項:
    • determineCurrentLookupKey

      @Nullable protected abstract ObjectSE determineCurrentLookupKey()
      現在の検索キーを決定します。これは通常、スレッドにバインドされたトランザクションコンテキストをチェックするために実装されます。

      任意のキーを許可します。返されるキーは、resolveSpecifiedLookupKey(java.lang.Object) メソッドによって解決されるように、保存されているルックアップキー型と一致する必要があります。