spring的事务管理

Posted thegarden

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring的事务管理相关的知识,希望对你有一定的参考价值。

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

以上是关于spring的事务管理的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

使用 Git 来管理 Xcode 中的代码片段