Class JdbcMetadataStore
java.lang.Object
org.springframework.integration.jdbc.metadata.JdbcMetadataStore
- All Implemented Interfaces:
InitializingBean
,Lifecycle
,Phased
,SmartLifecycle
,ConcurrentMetadataStore
,MetadataStore
public class JdbcMetadataStore
extends Object
implements ConcurrentMetadataStore, InitializingBean, SmartLifecycle
Implementation of
ConcurrentMetadataStore
using a relational database via JDBC.
SQL scripts to create the necessary tables are packaged as
org/springframework/integration/jdbc/schema-*.sql
,
where *
is the target database type.
The transaction management is required to use this ConcurrentMetadataStore
.
This class implements SmartLifecycle
and calls
SELECT COUNT(METADATA_KEY) FROM %sMETADATA_STORE
query
according to the provided prefix on start()
to check if required table is present in DB.
The application context will fail to start if the table is not present.
This check can be disabled via setCheckDatabaseOnStart(boolean)
.
- Since:
- 5.0
- Author:
- Bojan Vukasovic, Artem Bilan, Gary Russell
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Default value for the table prefix property.Fields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE
-
Constructor Summary
ConstructorDescriptionJdbcMetadataStore
(DataSource dataSource) Instantiate aJdbcMetadataStore
using provided dataSourceDataSource
.JdbcMetadataStore
(JdbcOperations jdbcOperations) Instantiate aJdbcMetadataStore
using provided jdbcOperationsJdbcOperations
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Reads a value for the given key from this MetadataStore.boolean
boolean
void
Writes a key value pair to this MetadataStore.putIfAbsent
(String key, String value) Atomically insert the key into the store.Remove a value for the given key from this MetadataStore.boolean
Atomically replace the value for the key in the store if the old value matches the oldValue argument.void
setCheckDatabaseOnStart
(boolean checkDatabaseOnStart) The flag to perform a database check query on start or not.void
setLockHint
(String lockHint) Specify a row lock hint for the query in the lock-based operations.void
A unique grouping identifier for all messages persisted with this store.void
setTablePrefix
(String tablePrefix) Public setter for the table prefix property.void
start()
void
stop()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.context.SmartLifecycle
getPhase, stop
-
Field Details
-
DEFAULT_TABLE_PREFIX
Default value for the table prefix property.- See Also:
-
-
Constructor Details
-
JdbcMetadataStore
Instantiate aJdbcMetadataStore
using provided dataSourceDataSource
.- Parameters:
dataSource
- aDataSource
-
JdbcMetadataStore
Instantiate aJdbcMetadataStore
using provided jdbcOperationsJdbcOperations
.- Parameters:
jdbcOperations
- aJdbcOperations
-
-
Method Details
-
setTablePrefix
Public setter for the table prefix property. This will be prefixed to all the table names before queries are executed. Defaults toDEFAULT_TABLE_PREFIX
.- Parameters:
tablePrefix
- the tablePrefix to set
-
setRegion
A unique grouping identifier for all messages persisted with this store. Using multiple regions allows the store to be partitioned (if necessary) for different purposes. Defaults toDEFAULT
.- Parameters:
region
- the region name to set
-
setLockHint
Specify a row lock hint for the query in the lock-based operations. Defaults toFOR UPDATE
. Can be specified as an empty string, if the target RDBMS doesn't support locking on tables from queries. The value depends on the RDBMS vendor, e.g. SQL Server requiresWITH (ROWLOCK)
.- Parameters:
lockHint
- the RDBMS vendor-specific lock hint.- Since:
- 5.0.7
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
setCheckDatabaseOnStart
public void setCheckDatabaseOnStart(boolean checkDatabaseOnStart) The flag to perform a database check query on start or not.- Parameters:
checkDatabaseOnStart
- false to not perform the database check.- Since:
- 6.2
-
isAutoStartup
public boolean isAutoStartup()- Specified by:
isAutoStartup
in interfaceSmartLifecycle
-
start
public void start() -
stop
public void stop() -
isRunning
public boolean isRunning() -
putIfAbsent
Description copied from interface:ConcurrentMetadataStore
Atomically insert the key into the store.- Specified by:
putIfAbsent
in interfaceConcurrentMetadataStore
- Parameters:
key
- The key.value
- The value.- Returns:
- null if successful, the old value otherwise.
-
replace
Description copied from interface:ConcurrentMetadataStore
Atomically replace the value for the key in the store if the old value matches the oldValue argument.- Specified by:
replace
in interfaceConcurrentMetadataStore
- Parameters:
key
- The key.oldValue
- The old value.newValue
- The new value.- Returns:
- true if successful.
-
put
Description copied from interface:MetadataStore
Writes a key value pair to this MetadataStore.- Specified by:
put
in interfaceMetadataStore
- Parameters:
key
- The key.value
- The value.
-
get
Description copied from interface:MetadataStore
Reads a value for the given key from this MetadataStore.- Specified by:
get
in interfaceMetadataStore
- Parameters:
key
- The key.- Returns:
- The value.
-
remove
Description copied from interface:MetadataStore
Remove a value for the given key from this MetadataStore.- Specified by:
remove
in interfaceMetadataStore
- Parameters:
key
- The key.- Returns:
- The previous value associated with key, or null if there was no mapping for key.
-