当前位置: 首页 > news >正文

长沙的网站建设蓝田县建设局网站

长沙的网站建设,蓝田县建设局网站,微信h5爆点游戏源码,医院网站建设方案青岛卓信此文章为笔记#xff0c;为阅读其他文章的感受、补充、记录、练习、汇总#xff0c;非原创#xff0c;感谢每个知识分享者。 文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传…此文章为笔记为阅读其他文章的感受、补充、记录、练习、汇总非原创感谢每个知识分享者。 文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传播属性设置错误 Transactional是一种基于注解管理事务的方式spring通过动态代理的方式为目标方法实现事务管理的增强。 Transactional使用起来方便但也需要注意引起Transactional失效的场景本文总结了七种情况下面进行逐一分析。 1、异常被捕获后没有抛出 当异常被捕获后并且没有再抛出那么deleteUserA是不会回滚的。 Transactional public void deleteUser() {userMapper.deleteUserA();try {int i 1 / 0;userMapper.deleteUserB();} catch (Exception e) {e.printStackTrace();} }2、抛出非运行时异常 异步虽然抛出了但是抛出的是非RuntimeException类型的异常依旧不会生效。 Transactional public void deleteUser() throws MyException{userMapper.deleteUserA();try {int i 1 / 0;userMapper.deleteUserB();} catch (Exception e) {throw new MyException();} }如果指定了回滚异常类型为Exception那么就可以回滚非RuntimeException类型异常了。 Transactional(rollbackFor Exception.class)3、方法内部直接调用 如果先调用deleteUser()那么deleteUserA()是不会回滚的其原因就是Transactional根本没生成代理如果直接调用deleteUser2()那么没问题deleteUserA()会回滚。 public void deleteUser() throws MyException{deleteUser2(); }Transactional public void deleteUser2() throws MyException{userMapper.deleteUserA();int i 1 / 0;userMapper.deleteUserB(); }修改方式把当前类自己注入一下调用即可。 Service public class UserService {Autowiredprivate UserMapper userMapper;//自己注入自己AutowiredUserService userService;public void deleteUser() throws MyException{userService.deleteUser2();}Transactionalpublic void deleteUser2() throws MyException{userMapper.deleteUserA();int i 1 / 0;userMapper.deleteUserB();} }4、新开启一个线程 如下的方式deleteUserA()也不会回滚因为spring实现事务的原理是通过ThreadLocal把数据库连接绑定到当前线程中新开启一个线程获取到的连接就不是同一个了。 Transactional public void deleteUser() throws MyException{userMapper.deleteUserA();try {//休眠1秒保证deleteUserA先执行Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() - {int i 1/0;userMapper.deleteUserB();}).start(); }5、注解到private方法上 idea直接会给出提示Methods annotated with ‘Transactional’ must be overridable 原理很简单private修饰的方式spring无法生成动态代理。 Transactional private void deleteUser() throws MyException{userMapper.deleteUserA();int i 1/0;userMapper.deleteUserB(); }6、数据库本身不支持 mysql数据库必须设置数据库引擎为InnoDB。 7、事务传播属性设置错误 注意传播属性的设置比如设置了PROPAGATION_NOT_SUPPORIED以非事务的方式执行如果当前有事务则把当前事务挂起。
http://www.dnsts.com.cn/news/39840.html

相关文章:

  • 企业信用网站建设做网站用哪个笔记本
  • 想做网站的客户在哪找企业网站怎么做毕业设计
  • 食品网站建设网站服务器组建
  • 高大上的企业网站欣赏好的手机网站推荐
  • 怎么更改网站域名成都原画培训机构排行
  • 网站标签怎么改wordpress页面全屏的插件
  • 建设网站的政策风险分析微信营销系统平台
  • 网站开发字体过大滕州盛扬网络公司网站建设推广
  • 网站建设套餐介绍wordpress 装饰模板
  • 移动版网站建设网站顶部
  • 做网站教学书html5手机网站分辩率
  • 湖南seo网站设计镇江市住房和城乡建设局网站
  • 大连企业网站怎么使用模板建设网站
  • 一起做网站广州网站建设公司有哪几家
  • 网站推广排名外包做网站的书知乎
  • 网站设计介绍php网站后台登陆不上
  • 宁波江北建设局网站ui设计技术培训培训班
  • 外国购物网站有哪些平台泉州哪里有搭建网站的公司
  • 网站建设维护与管理实训总结龙华网站建设营销推广
  • 做网站需要成立公司吗有哪些免费推广软件
  • 网站推广策划案怎么选深圳做网站建设公司
  • 个人网站是什么意思wordpress图片ssl
  • 阿里云个人网站制作温州网站建设优化
  • 花市小说网站那里进北京营销型网站
  • seo建站教学手机软件商店下载
  • 购物网站设计泉州公司建设网站
  • 品牌网站建设定制wordpress仿微信音乐插件
  • 建网站用什么服务器好岳阳网站建设哪里便宜
  • 重庆高端品牌网站建设如何利用模板做网站视频
  • 网站优化有什么用宝安中心医院怎么样