首先介绍几个重要的类/接口。
PlatformTransactionManager是核心(core class)。AbstractPlatformTransactionManager是非常重要的一个基础事务处理/管理类。后者处理了各式各样的事务的“共性”,比如Propagation的合法性检查验证等,从而达到将真正的事务方法的实现留在具体的派生类里去实现这一目的。
TransactionDefinition是对事务metedata进行描述的一个定义类,主要包括isolation level,propagation behavior,time out特性,只读特性等等信息。它给出了一个较完整的事务元数据的定义。
TransactionStatus包括是否是新的事务,事务的rollback only特性,是否有Savepoint,事务是否已完成等状态信息。事务的状态是事务框架结构中很重要的一个特性,事务的处理伴随这状态的变更。
TransactionStatus还继承了SavepointManager的特性,包括Savepoint的创建、释放和回滚等操作。
下面是PlatformTransactionManager类的代码。
public interface PlatformTransactionManager {
TransactionStatus getTransaction(TransactionDefinition definition)
throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
PlatformTransactionManager是一个SPI接口。从代码结构可以看出,TransactionDefinition是描述事务的metadata类,TransactionStatus可以理解为一个包含有重要的状态信息的事务。
其中,抛出的异常TransactionException是Spring自身定义的一个unchecked exception类,这也体现了类名中的platform特色和Spring的一贯的philosophy。