spring的事务管理

こ雲淡風輕ζ 提交于 2019-12-04 13:39:30

spring事务管理

spring的事务管理是把事务由DAO层提升到service层来管理;它实际上是对于AOP思想的应用。我们只需要配置好平台事务管理器这一个“切面”就可以了;

spring中“平台事务管理接口”负责完成事务的提交和回滚;接口图解如下:

对于 JDBC和Mybatis可以对“DataSourceTransactionManager” 这个事务管理接口的实现类进行配置;

如下是配置JDBC事务管理

xml实现

<!--注册平台事务管理器:切面/顾问-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!--引用自己配置的数据库-->
    <property name="dataSource" ref="myDataSource"/>
</bean>

<!--注册事务通知-->
<tx:advice id="txAdvice" transaction-manager="txManager">
    <!--指定连接点-->
    <tx:attributes>
        <!--可以设置事务隔离级别,和传播行为-->
        <tx:method name="open*" isolation="DEFAULT" propagation="REQUIRED"/>
        <!--添加异常回滚-->
        <tx:method name="buy*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
    </tx:attributes>
</tx:advice>

<!--aop配置-->
<aop:config>
    <aop:advisor advice-ref="txAdvice" pointcut="execution(* *..service.*.*(..))"/>
</aop:config>

注解实现

需要在配置文件中需要加上事务注解的驱动

<!--注册事务注解驱动-->
<tx:annotation-driven transaction-manager="txManager"/>

事务接口的定义需要在service的实现类中加上事务的注解

@Transactional(rollbackFor = Exception.class)

其他配置可以通过springDI进行注入;

spring事务管理相关Demo可到GitHub参考07和08

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!