クラス DefaultLockRepository

java.lang.ObjectSE
org.springframework.integration.jdbc.lock.DefaultLockRepository
実装済みのインターフェース一覧:
CloseableSE, AutoCloseableSE, Aware, InitializingBean, SmartInitializingSingleton, ApplicationContextAware, Lifecycle, Phased, SmartLifecycle, LockRepository

org/springframework/integration/jdbc/schema-*.sql で提示されたスクリプトのテーブルに基づく LockRepository のデフォルトの実装。

このリポジトリは、異なる JdbcLockRegistry インスタンス間で共有できません。そうしないと、JdbcLockRegistry がローカル同期に非共有 ReentrantLockSE を使用する LockSE 契約を破る可能性が生じます。

このクラスは SmartLifecycle を実装し、start() で指定されたプレフィックスに従って SELECT COUNT(REGION) FROM %sLOCK クエリを呼び出し、必要なテーブルが DB に存在するかどうかを確認します。テーブルが存在しない場合、アプリケーションコンテキストは起動できません。このチェックは setCheckDatabaseOnStart(boolean) を介して無効にできます。

導入:
4.3
作成者:
Dave Syer, Artem Bilan, Glenn Renfro, Gary Russell, Alexandre Strubel, Ruslan Stelmachenko, Eddie Cho
  • フィールドの詳細

    • DEFAULT_TABLE_PREFIX

      public static final StringSE DEFAULT_TABLE_PREFIX
      テーブルプレフィックスプロパティのデフォルト値。
      関連事項:
  • コンストラクターの詳細

    • DefaultLockRepository

      public DefaultLockRepository(DataSourceSE dataSource)
      ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムな UUIDSE に初期化するコンストラクター。
      パラメーター:
      dataSource - ロックリポジトリを維持するために使用される DataSourceSE
    • DefaultLockRepository

      public DefaultLockRepository(DataSourceSE dataSource, StringSE id)
      ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。
      パラメーター:
      dataSource - ロックリポジトリを維持するために使用される DataSourceSE
      id - リポジトリによって処理されるロックに関連付けられるクライアント ID。
      導入:
      4.3.13
  • 方法の詳細

    • setRegion

      public void setRegion(StringSE region)
      すべてのロックの一意のグループ化識別子がこのストアで保持されました。複数のリージョンを使用すると、さまざまな目的でストアを(必要に応じて)パーティション化できます。デフォルトは DEFAULT です。
      パラメーター:
      region - 設定する領域名
    • setPrefix

      public void setPrefix(StringSE prefix)
      クエリで使用する対象データベーステーブルのプレフィックスを指定します。
      パラメーター:
      prefix - 設定するプレフィックス (デフォルトは INT_)。
    • setTransactionManager

      public void setTransactionManager(PlatformTransactionManager transactionManager)
      操作用の PlatformTransactionManager を設定します。それ以外の場合は、プライマリ PlatformTransactionManager Bean がアプリケーションコンテキストから取得されます。
      パラメーター:
      transactionManager - 使用する PlatformTransactionManager
      導入:
      6.0
    • setApplicationContext

      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
      次で指定:
      インターフェース ApplicationContextAware 内の setApplicationContext 
      例外:
      BeansException
    • setUpdateQuery

      public void setUpdateQuery(StringSE updateQuery)
      ロックレコードのカスタム UPDATE クエリを設定します。getUpdateQuery() はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。
      
       UPDATE %sLOCK
      			SET CLIENT_ID=?, EXPIRED_AFTER=?
      			WHERE REGION=? AND LOCK_KEY=? AND (CLIENT_ID=? OR EXPIRED_AFTER<?)
      
      
      パラメーター:
      updateQuery - ロックレコードを更新するクエリ。
      導入:
      6.1
      関連事項:
    • getUpdateQuery

      public StringSE getUpdateQuery()
      現在の更新クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。
      戻り値:
      現在の更新クエリ。
      導入:
      6.1
      関連事項:
    • setInsertQuery

      public void setInsertQuery(StringSE insertQuery)
      ロックレコードに対してカスタムの INSERT クエリを設定します。getInsertQuery() をカスタマイズのテンプレートとして使用できます。デフォルトのクエリは INSERT INTO %sLOCK (REGION, LOCK_KEY, CLIENT_ID, CREATED_DATE, EXPIRED_AFTER) VALUES (?, ?, ?, ?, ?) です。例: PostgreSQL の ON CONFLICT DO NOTHING ヒントは次のように指定できます。
      
       lockRepository.setInsertQuery(lockRepository.getInsertQuery() + " ON CONFLICT DO NOTHING");
      
      
      パラメーター:
      insertQuery - ロックレコードの挿入クエリ。
      導入:
      6.1
      関連事項:
    • getInsertQuery

      public StringSE getInsertQuery()
      現在の挿入クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。
      戻り値:
      現在の挿入クエリ。
      導入:
      6.1
      関連事項:
    • setRenewQuery

      public void setRenewQuery(StringSE renewQuery)
      ロックレコードのカスタム INSERT クエリを設定します。getRenewQuery() はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。
      
       UPDATE %sLOCK
      			SET EXPIRED_AFTER=?
      			WHERE REGION=? AND LOCK_KEY=? AND CLIENT_ID=?
      
      
      パラメーター:
      renewQuery - ロックレコードを更新するための更新クエリ。
      導入:
      6.1
      関連事項:
    • getRenewQuery

      public StringSE getRenewQuery()
      現在の更新クエリを返します。setter では、デフォルトクエリと追加のヒントを連結して使用できます。
      戻り値:
      現在の更新に関する問い合わせ。
      導入:
      6.1
      関連事項:
    • setCheckDatabaseOnStart

      public void setCheckDatabaseOnStart(boolean checkDatabaseOnStart)
      開始時にデータベースチェッククエリを実行するかどうかのフラグ。
      パラメーター:
      checkDatabaseOnStart - データベースチェックを実行しない場合は false。
      導入:
      6.2
    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース InitializingBean 内の afterPropertiesSet 
    • afterSingletonsInstantiated

      public void afterSingletonsInstantiated()
      次で指定:
      インターフェース SmartInitializingSingleton 内の afterSingletonsInstantiated 
    • isAutoStartup

      public boolean isAutoStartup()
      次で指定:
      インターフェース SmartLifecycle 内の isAutoStartup 
    • start

      public void start()
      次で指定:
      インターフェース Lifecycle 内の start 
    • stop

      public void stop()
      次で指定:
      インターフェース Lifecycle 内の stop 
    • isRunning

      public boolean isRunning()
      次で指定:
      インターフェース Lifecycle 内の isRunning 
    • close

      public void close()
      次で指定:
      インターフェース AutoCloseableSE 内の close 
      次で指定:
      インターフェース CloseableSE 内の close 
      次で指定:
      インターフェース LockRepository 内の close 
    • delete

      public boolean delete(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      このリポジトリからロックを解除します。
      次で指定:
      インターフェース LockRepository 内の delete 
      パラメーター:
      lock - 削除するロック。
      戻り値:
      削除されたかどうか。
    • acquire

      public boolean acquire(StringSE lock, DurationSE ttlDuration)
      インターフェースからコピーされた説明: LockRepository
      特定の有効期限を持つキーのロックを取得する
      次で指定:
      インターフェース LockRepository 内の acquire 
      パラメーター:
      lock - lock を取得するためのキー。
      ttlDuration - カスタムの存続時間値
      戻り値:
      取得したかどうか。
    • isAcquired

      public boolean isAcquired(StringSE lock)
      インターフェースからコピーされた説明: LockRepository
      このリポジトリによってロックが保持されているかどうかを確認します。
      次で指定:
      インターフェース LockRepository 内の isAcquired 
      パラメーター:
      lock - チェックするロック。
      戻り値:
      取得したかどうか。
    • deleteExpired

      public void deleteExpired()
      インターフェースからコピーされた説明: LockRepository
      期限切れのロックをすべて削除します。
      次で指定:
      インターフェース LockRepository 内の deleteExpired 
    • renew

      public boolean renew(StringSE lock, DurationSE ttlDuration)
      インターフェースからコピーされた説明: LockRepository
      特定の有効期限を持つ錠前のリース契約を更新する
      次で指定:
      インターフェース LockRepository 内の renew 
      パラメーター:
      lock - lock を取得するためのキー。
      ttlDuration - カスタムの存続時間値
      戻り値:
      更新するかしないか。
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString