博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot 中使用事务
阅读量:5280 次
发布时间:2019-06-14

本文共 700 字,大约阅读时间需要 2 分钟。

直接在service 层的方法上加上 注解就ok。

注意事项:

1、Spring 基于注解的声明式事物  默认情况下只会对运行期异常(java.lang.RuntimeException及其子类)和 Error 进行回滚。

2、数据库引擎要支持事物,使用InnoDB。

3、 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.

4、看到网上好多人说要在启动类(配置类)上加  @EnableTransactionManagement 来开启事务支持。

 

经过测试并不需要。

 

spring aop  异常捕获原理:

被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获 RuntimeException 的异常,但可以通过配置来捕获特定的异常并回滚  

换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new runtimeexcetpion(),这样程序异常时才能被aop捕获进而回滚

 

想要不向上抛异常,也就是在service就捕获异常,而且注解还生效的方法:

在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常

转载于:https://www.cnblogs.com/austinspark-jessylu/p/9474807.html

你可能感兴趣的文章
【IScroll深入学习】解决IScroll疑难杂症
查看>>
python 数据类型
查看>>
108-PHP类成员protected和private成员属性不能被查看数值
查看>>
ajax post data 获取不到数据,注意contentType
查看>>
css控制height充满浏览器视口
查看>>
Linux 系统目录结构
查看>>
《Objective-C Runtime分析(一)-Runtime初步》
查看>>
快速排序
查看>>
java排序算法(五):快速排序
查看>>
阻止事件的默认行为,例如click <a>后的跳转~
查看>>
[BJOI2018]求和
查看>>
Activity的生命周期以及启动方式
查看>>
HackerRank "Triangle Numbers"
查看>>
iphone/iOS 访问本地数据库sqlite3
查看>>
关于 ie9 不执行 js 的问题
查看>>
sql 语句之 case
查看>>
二分图行列匹配与最大匹配必须边
查看>>
[设计模式]-对象的封装
查看>>
wpf首次项目开发总结之音频
查看>>
ODBC连接数据库实例
查看>>