1. Preface.
In declarative transactions, you configure a slice, which is a set of methods, such as
Java code
- <tx:advice id="Txadvice" transaction-manager="Txmanager" >
- <tx:attributes>
- <tx:method name="find*" read-only="true" propagation=" not_supported"/>
- </tx:attributes>
- </tx:advice>
The use of propagation, indicating how to use these methods of transactions, is used or not, of which propagation has seven configurations, REQUIRED, SUPPORTS, MANDATORY, Requires_new, Not_ Supported, never, NESTED. The default is required.
2. The meaning of seven kinds of configuration
The following is a detailed description of the transaction properties of the propagation class in spring:
REQUIRED: Supports the current transaction and creates a new transaction if there is no current transaction. This is the most common choice.
SUPPORTS: Supports the current transaction and is executed in a non-transactional manner if no transaction is currently in use.
MANDATORY: Supports the current transaction and throws an exception if there is no current transaction.
Requires_new: Creates a new transaction and suspends the current transaction if a transaction is currently present.
Not_supported: Executes the operation in a non-transactional manner, suspending the current transaction if a transaction is currently present.
Never: Executes in a non-transactional manner and throws an exception if a transaction is currently present.
NESTED: Supports the current transaction, executes a nested transaction if the current transaction exists, and creates a new transaction if there is no current transaction.
3. Note.
This configuration will affect the data store and must be selected according to the situation.
The meaning of the 7 configurations of propagation in spring AOP