public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean
The central method is execute(org.springframework.transaction.support.TransactionCallback<T>)
, supporting transactional code that
implements the TransactionCallback
interface. This template handles
the transaction lifecycle and possible exceptions such that neither the
TransactionCallback implementation nor the calling code needs to explicitly
handle transactions.
Typical usage: Allows for writing low-level data access objects that use resources such as JDBC DataSources but are not transaction-aware themselves. Instead, they can implicitly participate in transactions handled by higher-level application services utilizing this class, making calls to the low-level services via an inner-class callback object.
Can be used within a service implementation via direct instantiation with a transaction manager reference, or get prepared in an application context and passed to services as bean reference. Note: The transaction manager should always be configured as bean in the application context: in the first case given to the service directly, in the second case given to the prepared template.
Supports setting the propagation behavior and the isolation level by name, for convenient configuration in context definitions.
execute(org.springframework.transaction.support.TransactionCallback<T>)
,
setTransactionManager(org.springframework.transaction.PlatformTransactionManager)
,
PlatformTransactionManager
,
Serialized FormModifier and Type | Field and Description |
---|---|
protected Log |
logger
Logger available to subclasses
|
PREFIX_ISOLATION, PREFIX_PROPAGATION, PREFIX_TIMEOUT, READ_ONLY_MARKER
ISOLATION_DEFAULT, ISOLATION_READ_COMMITTED, ISOLATION_READ_UNCOMMITTED, ISOLATION_REPEATABLE_READ, ISOLATION_SERIALIZABLE, PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER, PROPAGATION_NOT_SUPPORTED, PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_SUPPORTS, TIMEOUT_DEFAULT
Constructor and Description |
---|
TransactionTemplate()
Construct a new TransactionTemplate for bean usage.
|
TransactionTemplate(PlatformTransactionManager transactionManager)
Construct a new TransactionTemplate using the given transaction manager.
|
TransactionTemplate(PlatformTransactionManager transactionManager,
TransactionDefinition transactionDefinition)
Construct a new TransactionTemplate using the given transaction manager,
taking its default settings from the given transaction definition.
|
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied
(and satisfied BeanFactoryAware and ApplicationContextAware).
|
<T> T |
execute(TransactionCallback<T> action)
Execute the action specified by the given callback object within a transaction.
|
PlatformTransactionManager |
getTransactionManager()
Return the transaction management strategy to be used.
|
void |
setTransactionManager(PlatformTransactionManager transactionManager)
Set the transaction management strategy to be used.
|
equals, getDefinitionDescription, getIsolationLevel, getName, getPropagationBehavior, getTimeout, hashCode, isReadOnly, setIsolationLevel, setIsolationLevelName, setName, setPropagationBehavior, setPropagationBehaviorName, setReadOnly, setTimeout, toString
protected final Log logger
public TransactionTemplate()
Note: The PlatformTransactionManager needs to be set before
any execute
calls.
public TransactionTemplate(PlatformTransactionManager transactionManager)
transactionManager
- the transaction management strategy to be usedpublic TransactionTemplate(PlatformTransactionManager transactionManager, TransactionDefinition transactionDefinition)
transactionManager
- the transaction management strategy to be usedtransactionDefinition
- the transaction definition to copy the
default settings from. Local properties can still be set to change values.public void setTransactionManager(@Nullable PlatformTransactionManager transactionManager)
@Nullable public PlatformTransactionManager getTransactionManager()
public void afterPropertiesSet()
InitializingBean
This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.
afterPropertiesSet
in interface InitializingBean
@Nullable public <T> T execute(TransactionCallback<T> action) throws TransactionException
TransactionOperations
Allows for returning a result object created within the transaction, that is, a domain object or a collection of domain objects. A RuntimeException thrown by the callback is treated as a fatal exception that enforces a rollback. Such an exception gets propagated to the caller of the template.
execute
in interface TransactionOperations
action
- the callback object that specifies the transactional actionnull
if noneTransactionException
- in case of initialization, rollback, or system errors