Talk is cheap , show me your code!
欢迎来到付振南Java博客,让我们一起学习Java吧!

spring之声明式事务控制(基于注解)

前面讲完了基于xml方式实现的spring声明式事务控制,接下来我们来讲一下基于注解的方法。

导maven坐标没啥变化,直接看基于xml方式的即可,接下来我们来一步一步消除xml配置。

首先我们看xml文件的配置。

配置业务层,注入dao,我们去业务层加上注解,并且让accountDao自动注入,所以accountDao的set方法可以删除了。

此时xml中业务层的配置可以删除了,然后看第二个。

也是同样的道理,在持久层加上注解,并且让jdbcTemplate自动注入,同时删除它的set方法。

此时xml中持久层的配置可以删除了,然后看下一个。

在这里,jdbcTemplate和数据源的配置就不删除了,在下一个纯注解方式的配置我们会讲到如何去掉这两个。

spring中基于注解的声明式事务控制的配置步骤
1.配置事务管理器,注入数据源
2.开启spring对注解事务的支持
3.在需要事务的地方使用@Transactional注解
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启spring对注解事务的支持 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 配置Spring容器创建时要扫描的包 -->
<context:component-scan base-package="cn.fuzhennan"/>

这些都很好理解,只需要一个tx:annotation-driven标签来指定事务管理器即可开启spring对注解事物的配置,然后我们去业务层的实现类使用@Transactional注解。

到此为止,基于注解方式的spring声明式事务控制都完成了,我们去测试类中测试一下, 同样的,我们需要在aaa更新完账户之后写一个异常。

测试结果:异常,除数为0
数据库中aaa和bbb的钱也没有变化

然后我们接着把那行错误代码注释了,看看能不能正常转账。

程序执行正常
数据库正常

我们看到aaa减了100,bbb加了100,也就是完成了一次成功的转账。

以上就是基于注解方式的spring声明式事务控制的全部内容了。有兴趣的同学可以看这篇纯注解实现spring声明式事务控制。

赞(1) 打赏
未经允许不得转载:付振南Java博客 » spring之声明式事务控制(基于注解)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏