spring-tx(一)

2017-10-23  本文已影响14人  一个非专业码农

参考地址

https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html

顶层接口

事务策略的顶层接口SPI 是 PlatformTransactionManager

public interface PlatformTransactionManager {

        TransactionStatus getTransaction(
                        TransactionDefinition definition) throws TransactionException;

        void commit(TransactionStatus status) throws TransactionException;

        void rollback(TransactionStatus status) throws TransactionException;
}

getTransaction接受TransactionDefinition 的对象,并且返回TransactionStatus(可能返回一个新的事务对象,也可能返回一个当前线程关联的事务对象)

TransactionDefinition 定义个一下几个属性:

getTransaction返回的TransactionStatus 提供一个对事务资源的常见操作和查询当前事务状态的接口。

public interface TransactionStatus extends SavepointManager {

        boolean isNewTransaction();

        boolean hasSavepoint();

        void setRollbackOnly();

        boolean isRollbackOnly();

        void flush();

        boolean isCompleted();

}

举个栗子

一般使用spring事务管理,需要提供一个实现PlatformTransactionManager的资源,现在使用一个简单使用jdbc完成事务操作的配置。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
</bean>
<!-- 事务资源管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
</bean>

根据事务资源不同(使用 JTA,或者hibernate等)使用的PlatformTransactionManager 可能不同,根据数据源的不同可以区别配置。

上一篇下一篇

猜你喜欢

热点阅读