クラス DefaultLockRepository
java.lang.ObjectSE
org.springframework.integration.jdbc.lock.DefaultLockRepository
- 実装済みのインターフェース一覧:
CloseableSE, AutoCloseableSE, Aware, InitializingBean, SmartInitializingSingleton, ApplicationContextAware, Lifecycle, Phased, SmartLifecycle, LockRepository
public class DefaultLockRepository
extends ObjectSE
implements LockRepository, InitializingBean, ApplicationContextAware, SmartInitializingSingleton, SmartLifecycle
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
フィールド概要
フィールドインターフェース SmartLifecycle から継承されたフィールド
DEFAULT_PHASEコンストラクター概要
コンストラクターコンストラクター説明DefaultLockRepository(DataSourceSE dataSource) ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムなUUIDSE に初期化するコンストラクター。DefaultLockRepository(DataSourceSE dataSource, StringSE id) ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。方法の概要
修飾子と型メソッド説明booleanacquire(StringSE lock, DurationSE ttlDuration) 特定の有効期限を持つキーのロックを取得するvoidvoidvoidclose()booleanこのリポジトリからロックを解除します。void期限切れのロックをすべて削除します。現在の挿入クエリを返します。現在の更新クエリを返します。現在の更新クエリを返します。booleanisAcquired(StringSE lock) このリポジトリによってロックが保持されているかどうかを確認します。booleanbooleanbooleanrenew(StringSE lock, DurationSE ttlDuration) 特定の有効期限を持つ錠前のリース契約を更新するvoidsetApplicationContext(ApplicationContext applicationContext) voidsetCheckDatabaseOnStart(boolean checkDatabaseOnStart) 開始時にデータベースチェッククエリを実行するかどうかのフラグ。voidsetInsertQuery(StringSE insertQuery) ロックレコードのカスタムINSERTクエリを設定します。voidクエリで使用する対象データベーステーブルのプレフィックスを指定します。voidすべてのロックの一意のグループ化識別子がこのストアで保持されました。voidsetRenewQuery(StringSE renewQuery) ロックレコードのカスタムINSERTクエリを設定します。voidsetTransactionManager(PlatformTransactionManager transactionManager) 操作用のPlatformTransactionManagerを設定します。voidsetUpdateQuery(StringSE updateQuery) ロックレコードのカスタムUPDATEクエリを設定します。voidstart()voidstop()toString()クラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSEインターフェース SmartLifecycle から継承されたメソッド
getPhase, isPauseable, stop
フィールドの詳細
DEFAULT_TABLE_PREFIX
コンストラクターの詳細
DefaultLockRepository
ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムなUUIDSE に初期化するコンストラクター。- パラメーター:
dataSource- ロックリポジトリを維持するために使用されるDataSourceSE。
DefaultLockRepository
ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。- パラメーター:
dataSource- ロックリポジトリを維持するために使用されるDataSourceSE。id- リポジトリによって処理されるロックに関連付けられるクライアント ID。- 導入:
- 4.3.13
方法の詳細
setRegion
すべてのロックの一意のグループ化識別子がこのストアで保持されました。複数のリージョンを使用すると、さまざまな目的でストアを(必要に応じて)パーティション化できます。デフォルトはDEFAULTです。- パラメーター:
region- 設定する領域名
setPrefix
クエリで使用する対象データベーステーブルのプレフィックスを指定します。- パラメーター:
prefix- 設定するプレフィックス (デフォルトはINT_)。
setTransactionManager
操作用のPlatformTransactionManagerを設定します。それ以外の場合は、プライマリPlatformTransactionManagerBean がアプリケーションコンテキストから取得されます。- パラメーター:
transactionManager- 使用するPlatformTransactionManager。- 導入:
- 6.0
setApplicationContext
- 次で指定:
- インターフェース
ApplicationContextAware内のsetApplicationContext - 例外:
BeansException
setUpdateQuery
ロックレコードのカスタムUPDATEクエリを設定します。getUpdateQuery()はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。UPDATE %sLOCK SET CLIENT_ID=?, EXPIRED_AFTER=? WHERE REGION=? AND LOCK_KEY=? AND (CLIENT_ID=? OR EXPIRED_AFTER<?)- パラメーター:
updateQuery- ロックレコードを更新するクエリ。- 導入:
- 6.1
- 関連事項:
getUpdateQuery
現在の更新クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。- 戻り値:
- 現在の更新クエリ。
- 導入:
- 6.1
- 関連事項:
setInsertQuery
ロックレコードに対してカスタムの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
現在の挿入クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。- 戻り値:
- 現在の挿入クエリ。
- 導入:
- 6.1
- 関連事項:
setRenewQuery
ロックレコードのカスタムINSERTクエリを設定します。getRenewQuery()はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。UPDATE %sLOCK SET EXPIRED_AFTER=? WHERE REGION=? AND LOCK_KEY=? AND CLIENT_ID=?- パラメーター:
renewQuery- ロックレコードを更新するための更新クエリ。- 導入:
- 6.1
- 関連事項:
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
stop
isRunning
close
public void close()- 次で指定:
- インターフェース
AutoCloseableSE内のclose - 次で指定:
- インターフェース
CloseableSE内のclose - 次で指定:
- インターフェース
LockRepository内のclose
delete
インターフェースからコピーされた説明:LockRepositoryこのリポジトリからロックを解除します。- 次で指定:
- インターフェース
LockRepository内のdelete - パラメーター:
lock- 削除するロック。- 戻り値:
- 削除されたかどうか。
acquire
インターフェースからコピーされた説明:LockRepository特定の有効期限を持つキーのロックを取得する- 次で指定:
- インターフェース
LockRepository内のacquire - パラメーター:
lock- lock を取得するためのキー。ttlDuration- カスタムの存続時間値- 戻り値:
- 取得したかどうか。
isAcquired
インターフェースからコピーされた説明:LockRepositoryこのリポジトリによってロックが保持されているかどうかを確認します。- 次で指定:
- インターフェース
LockRepository内のisAcquired - パラメーター:
lock- チェックするロック。- 戻り値:
- 取得したかどうか。
deleteExpired
public void deleteExpired()インターフェースからコピーされた説明:LockRepository期限切れのロックをすべて削除します。- 次で指定:
- インターフェース
LockRepository内のdeleteExpired
renew
インターフェースからコピーされた説明:LockRepository特定の有効期限を持つ錠前のリース契約を更新する- 次で指定:
- インターフェース
LockRepository内のrenew - パラメーター:
lock- lock を取得するためのキー。ttlDuration- カスタムの存続時間値- 戻り値:
- 更新するかしないか。
toString