Spring事务02PlatformTransactionManager

编程

AbstractPlatformTransactionManager 实现了最顶层事务管理 PlatformTransactionManager 接口。

挑几个常见的实现类,Spring 事务管理重要的是 DataSourceTransactionManager

1、类方法概览

2、类接口解释

/**

* This is the central interface in Spring"s transaction infrastructure.

* Applications can use this directly, but it is not primarily meant as API:

* Typically, applications will work with either TransactionTemplate or

* declarative transaction demarcation through AOP.

*

* <p>For implementors, it is recommended to derive from the provided

* {@link org.springframework.transaction.support.AbstractPlatformTransactionManager}

* class, which pre-implements the defined propagation behavior and takes care

* of transaction synchronization handling. Subclasses have to implement

* template methods for specific states of the underlying transaction,

* for example: begin, suspend, resume, commit.

*

* <p>The default implementations of this strategy interface are

* {@link org.springframework.transaction.jta.JtaTransactionManager} and

* {@link org.springframework.jdbc.datasource.DataSourceTransactionManager},

* which can serve as an implementation guide for other transaction strategies.

*

*

* ------------------------ 翻译中文如下 ------------------------

*

* 这是Spring事务基础结构中的中心接口。

* 应用程序可以直接使用它,但它主要不是作为API:

* 通常,应用程序将使用TransactionTemplate或

* 通过AOP进行声明性事务界定。

*

* 对于实现者,建议从提供的

* {@link org.springframework.transaction.support.AbstractPlatformTransactionManager}

* 类,它预先实现了已定义的传播行为并小心处理

* 事务同步处理。子类必须实现

* 用于底层事务的特定状态的模板方法,

* 例如:begin(开始)、suspend(暂停)、resume(恢复)、commit(提交)。

*

* 此策略接口的默认实现为

* {@link org.springframework.transaction.jta。JtaTransactionManager},

* {@link org.springframework.jdbc.datasource.DataSourceTransactionManager},

* 可作为其他交易策略的执行指引。

*

* @since 16.05.2003

* @see org.springframework.transaction.support.TransactionTemplate

* @see org.springframework.transaction.interceptor.TransactionInterceptor

* @see org.springframework.transaction.interceptor.TransactionProxyFactoryBean

*/

public interface PlatformTransactionManager {}

3、类方法 getTransaction()

/**

* Return a currently active transaction or create a new one, according to

* the specified propagation behavior.

* <p>Note that parameters like isolation level or timeout will only be applied

* to new transactions, and thus be ignored when participating in active ones.

* <p>Furthermore, not all transaction definition settings will be supported

* by every transaction manager: A proper transaction manager implementation

* should throw an exception when unsupported settings are encountered.

* <p>An exception to the above rule is the read-only flag, which should be

* ignored if no explicit read-only mode is supported. Essentially, the

* read-only flag is just a hint for potential optimization.

* @param definition the TransactionDefinition instance (can be {@code null} for defaults),

* describing propagation behavior, isolation level, timeout etc.

* @return transaction status object representing the new or current transaction

* @throws TransactionException in case of lookup, creation, or system errors

* @throws IllegalTransactionStateException if the given transaction definition

* cannot be executed (for example, if a currently active transaction is in

* conflict with the specified propagation behavior)

*

* ------------------------ 翻译中文如下 ------------------------

*

* 根据,返回当前活动的事务或创建一个新的事务

* 指定的传播行为。

*

* <p>注意,隔离级别或超时等参数只会被应用

* 到新事务,因此在参与活动事务时被忽略。

*

* <p>此外,不是所有的事务定义设置将被支持

* 每个事务管理器:一个合适的事务管理器实现

* 遇到不支持的设置时应该抛出异常。

*

* <p>上述规则的一个例外是只读标志,它应该是

* 如果不支持显式只读模式,则忽略。本质上讲,

* 只读标志只是潜在优化的一个提示。

* TransactionDefinition实例(默认值可以是{@code null}),

* 描述传播行为、隔离级别、超时等。

* @return表示新事务或当前事务的事务状态对象

* 在查找、创建或系统错误时抛出TransactionException

* 如果给定事务定义,@抛出IllegalTransactionStateException

* 无法执行(例如,如果当前活动的事务处于

* 与指定的传播行为冲突)

*

* @see TransactionDefinition#getPropagationBehavior

* @see TransactionDefinition#getIsolationLevel

* @see TransactionDefinition#getTimeout

* @see TransactionDefinition#isReadOnly

*/

TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException;

4、类方法 commit()

/**

* Commit the given transaction, with regard to its status. If the transaction

* has been marked rollback-only programmatically, perform a rollback.

* <p>If the transaction wasn"t a new one, omit the commit for proper

* participation in the surrounding transaction. If a previous transaction

* has been suspended to be able to create a new one, resume the previous

* transaction after committing the new one.

* <p>Note that when the commit call completes, no matter if normally or

* throwing an exception, the transaction must be fully completed and

* cleaned up. No rollback call should be expected in such a case.

* <p>If this method throws an exception other than a TransactionException,

* then some before-commit error caused the commit attempt to fail. For

* example, an O/R Mapping tool might have tried to flush changes to the

* database right before commit, with the resulting DataAccessException

* causing the transaction to fail. The original exception will be

* propagated to the caller of this commit method in such a case.

*

* ------------------------ 翻译中文如下 ------------------------

*

* 提交给定事务的状态。如果事务

* 仅以编程方式标记回滚,请执行回滚。

*

* <p>如果事务不是新的,适当地忽略提交

* 参与周边交易。如果之前的交易

* 已经暂停可以创建一个新的,恢复以前的

* 提交新事务后的事务。

*

* <p>注意,当提交调用完成时,无论是否正常或

* 抛出异常时,事务必须完全完成

* 清理干净。在这种情况下不应该期望回滚调用。

*

* <p>如果这个方法抛出一个TransactionException之外的异常,

* 然后一些提交前的错误导致提交尝试失败。为

* 例如,O/R映射工具可能尝试将更改刷新到

* 提交之前的数据库,生成DataAccessException

* 导致事务失败。最初的例外是

* 在这种情况下传播到此提交方法的调用者。

*

* @param status object returned by the {@code getTransaction} method

* @throws UnexpectedRollbackException in case of an unexpected rollback

* that the transaction coordinator initiated

* @throws HeuristicCompletionException in case of a transaction failure

* caused by a heuristic decision on the side of the transaction coordinator

* @throws TransactionSystemException in case of commit or system errors

* (typically caused by fundamental resource failures)

* @throws IllegalTransactionStateException if the given transaction

* is already completed (that is, committed or rolled back)

* @see TransactionStatus#setRollbackOnly

*/

void commit(TransactionStatus status) throws TransactionException;

5、类方法 rollback()

/**

* Perform a rollback of the given transaction.

* <p>If the transaction wasn"t a new one, just set it rollback-only for proper

* participation in the surrounding transaction. If a previous transaction

* has been suspended to be able to create a new one, resume the previous

* transaction after rolling back the new one.

* <p><b>Do not call rollback on a transaction if commit threw an exception.</b>

* The transaction will already have been completed and cleaned up when commit

* returns, even in case of a commit exception. Consequently, a rollback call

* after commit failure will lead to an IllegalTransactionStateException.

*

* ------------------------ 翻译中文如下 ------------------------

*

* 执行给定事务的回滚。

*

* <p>如果事务不是一个新的,只是设置回滚-只有为正确

* 参与周边交易。如果之前的交易

* 已经暂停可以创建一个新的,恢复以前的吗

* 事务后回滚新的一个。

*

* <p><b>如果提交抛出异常,则不调用事务回滚。</b>

* 事务在提交时就已经完成并清理了

* 返回,即使在提交异常的情况下也是如此。因此,回滚调用

* 提交失败后将导致一个非法的事务状态异常。

*

* @param status object returned by the {@code getTransaction} method

* @throws TransactionSystemException in case of rollback or system errors

* (typically caused by fundamental resource failures)

* @throws IllegalTransactionStateException if the given transaction

* is already completed (that is, committed or rolled back)

*/

void rollback(TransactionStatus status) throws TransactionException;

 

以上是 Spring事务02PlatformTransactionManager 的全部内容, 来源链接: utcz.com/z/513283.html

回到顶部