クラス 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
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSEテーブルプレフィックスプロパティのデフォルト値。static final DurationSEtime-to-live プロパティのデフォルト値。インターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASEコンストラクターの概要
コンストラクターコンストラクター説明DefaultLockRepository(DataSourceSE dataSource) ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムなUUIDSE に初期化するコンストラクター。DefaultLockRepository(DataSourceSE dataSource, StringSE id) ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。メソッドのサマリー
修飾子と型メソッド説明booleanキーのロックを取得します。voidvoidvoidclose()booleanこのリポジトリからロックを解除します。void期限切れのロックをすべて削除します。現在の挿入クエリを返します。現在の更新クエリを返します。現在の更新クエリを返します。booleanisAcquired(StringSE lock) このリポジトリによってロックが保持されているかどうかを確認します。booleanbooleanbooleanロックのリースを更新します。voidsetApplicationContext(ApplicationContext applicationContext) voidsetCheckDatabaseOnStart(boolean checkDatabaseOnStart) 開始時にデータベースチェッククエリを実行するかどうかのフラグ。voidsetInsertQuery(StringSE insertQuery) ロックレコードのカスタムINSERTクエリを設定します。voidクエリから使用されるターゲットデータベーステーブルのプレフィックスを指定します。voidすべてのロックの一意のグループ化識別子がこのストアで保持されました。voidsetRenewQuery(StringSE renewQuery) ロックレコードのカスタムINSERTクエリを設定します。voidsetTimeToLive(int timeToLive) デッドロックが期限切れになるまでの時間をミリ秒単位で指定します。voidsetTransactionManager(PlatformTransactionManager transactionManager) 操作用のPlatformTransactionManagerを設定します。voidsetUpdateQuery(StringSE updateQuery) ロックレコードのカスタムUPDATEクエリを設定します。voidstart()voidstop()クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース org.springframework.context.SmartLifecycle から継承されたメソッド
getPhase, stop
フィールドの詳細
DEFAULT_TABLE_PREFIX
DEFAULT_TTL
time-to-live プロパティのデフォルト値。
コンストラクターの詳細
DefaultLockRepository
ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をランダムなUUIDSE に初期化するコンストラクター。- パラメーター:
dataSource- ロックリポジトリを維持するために使用されるDataSourceSE。
DefaultLockRepository
ストアインスタンスによって永続化されるすべてのロックに関連付けられるクライアント ID をユーザーが指定できるようにするコンストラクター。- パラメーター:
dataSource- ロックリポジトリを維持するために使用されるDataSourceSE。id- リポジトリによって処理されるロックに関連付けられるクライアント ID。- 導入:
- 4.3.13
メソッドの詳細
setRegion
すべてのロックの一意のグループ化識別子がこのストアで保持されました。複数のリージョンを使用すると、さまざまな目的でストアを(必要に応じて)パーティション化できます。デフォルトはDEFAULTです。- パラメーター:
region- 設定する領域名
setPrefix
クエリから使用されるターゲットデータベーステーブルのプレフィックスを指定します。- パラメーター:
prefix- 設定するプレフィックス (デフォルトはINT_)。
setTimeToLive
public void setTimeToLive(int timeToLive) デッドロックが期限切れになるまでの時間をミリ秒単位で指定します。- パラメーター:
timeToLive- デッドロックが期限切れになるまでの時間。
setTransactionManager
操作用のPlatformTransactionManagerを設定します。それ以外の場合は、プライマリPlatformTransactionManagerBean がアプリケーションコンテキストから取得されます。- パラメーター:
transactionManager- 使用するPlatformTransactionManager。- 導入:
- 6.0
setApplicationContext
- 次で指定:
- インターフェース
ApplicationContextAwareのsetApplicationContext - 例外:
BeansException
setUpdateQuery
ロックレコードのカスタムUPDATEクエリを設定します。getUpdateQuery()はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。UPDATE %sLOCK SET CLIENT_ID=?, CREATED_DATE=? WHERE REGION=? AND LOCK_KEY=? AND (CLIENT_ID=? OR CREATED_DATE<?)- パラメーター:
updateQuery- ロックレコードを更新するクエリ。- 導入:
- 6.1
- 関連事項:
getUpdateQuery
現在の更新クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。- 戻り値:
- 現在の更新クエリ。
- 導入:
- 6.1
- 関連事項:
setInsertQuery
ロックレコードのカスタムINSERTクエリを設定します。getInsertQuery()はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリはINSERT INTO %sLOCK (REGION, LOCK_KEY, CLIENT_ID, CREATED_DATE) VALUES (?, ?, ?, ?)です。たとえば、PostgreSQLON CONFLICT DO NOTHINGヒントは次のように提供できます。lockRepository.setInsertQuery(lockRepository.getInsertQuery() + " ON CONFLICT DO NOTHING");- パラメーター:
insertQuery- ロックレコードの挿入クエリ。- 導入:
- 6.1
- 関連事項:
getInsertQuery
現在の挿入クエリを返します。デフォルトのクエリと追加のヒントを連結して setter で使用できます。- 戻り値:
- 現在の挿入クエリ。
- 導入:
- 6.1
- 関連事項:
setRenewQuery
ロックレコードのカスタムINSERTクエリを設定します。getRenewQuery()はカスタマイズ用のテンプレートとして使用できます。デフォルトのクエリは次のとおりです。UPDATE %sLOCK SET CREATED_DATE=? 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 を取得するためのキー。- 戻り値:
- 取得したかどうか。
isAcquired
インターフェースからコピーされた説明:LockRepositoryこのリポジトリによってロックが保持されているかどうかを確認します。- 次で指定:
- インターフェース
LockRepositoryのisAcquired - パラメーター:
lock- チェックするロック。- 戻り値:
- 取得したかどうか。
deleteExpired
public void deleteExpired()インターフェースからコピーされた説明:LockRepository期限切れのロックをすべて削除します。- 次で指定:
- インターフェース
LockRepositoryのdeleteExpired
renew
インターフェースからコピーされた説明:LockRepositoryロックのリースを更新します。- 次で指定:
- インターフェース
LockRepositoryのrenew - パラメーター:
lock- 更新するロック。- 戻り値:
- 更新するかしないか。