springmvc开启事务_在Controller中添加事务管理

本文探讨了在Controller中添加事务管理的不推荐性,并详细介绍了如何在Spring MVC环境中实现Controller的事务控制,强调事务应在Service层处理。文章分析了为何在spring-mvc.xml中配置事务管理有效,同时列举了@Transactional注解可能无效的场景,并提供了项目中遇到的问题及解决方案,包括将业务逻辑移回Service层或手动编写事务代码。
摘要由CSDN通过智能技术生成

写这篇文章之前先说明一下:

1. Controller中添加事务管理,是可行的,但是强烈不推荐,因为不符合实际开发场景,还会导致一系列问题

2. 事务请在Service处理,所有的业务逻辑请写在 Service, Service中异常请抛出,慎用 try...catch捕获异常

写这边文章的背景:

公司有个老的项目,springMVC + spring + mybatis,事务是在Service层处理的,但是之前的开发人员把很多业务逻辑写在了 Controller,出现了操作失败仍然将数据写入数据库的bug.....,于是开始研究在 Controller中添加事务管理

Controller中添加事务管理步骤:

1. spring.xml中事务配置不变

2. 在spring-mvc.xml中定义事务配置:

A: 命名空间中 加入约束 不加项目启动会报异常:

xmlns:tx="http://www.springframework.org/schema/tx"

http://www.springframework.org/schema/tx    http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

B:  定义事务注解解析  

3. 在需要控制事务的Controller 类或者方法上使用 @Transactional(rollbackFor = {Exception.class}) ,当出现异常回滚

需要注意的是:  Controller层只支持 @Transactional 注解式事务!

关于为什么要在spring-mvc.xml中添加   的说明:

错误的方式----通过修改spring.xml中的配置来实现在controller中控制事务会发现事务无效,如下:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值