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

主流门户网站网站建设平台方案

主流门户网站,网站建设平台方案,山西太原室内设计学校,上海比较好的公司排名记录spring中Transactional事务注解失效的六个场景 方法内的自调用 原因:通过this内部调用其他带有Transactional注解的方法,是通过this进行调用,并没有通过cglib代理对象进行调用,导致方法未被增强导致无法检测内部事务 解决方…

记录spring中Transactional事务注解失效的六个场景

方法内的自调用

原因:通过this内部调用其他带有@Transactional注解的方法,是通过this进行调用,并没有通过cglib代理对象进行调用,导致方法未被增强导致无法检测内部事务
解决方法:通过实现类内部自己注入自己的bean实现调用内部方法,以调用cglib增强的代理方法。或者通过AopContext.currentProxy()获取当前代理对象,使用之前需要引aspectjweaver依赖,并且需要在启动类上加入@EnableAspectJAutoProxy(exposeProxy=true)注解。或者在调用方加入@Transactional注解

方法是private的

原因:spring基于cglib进行AOP,cglib基于父子类来实现的,子类是代理类,父类是被代理类,如果父类某个方法是被private修饰,子类的类没法拿到父类的方法,所以导致方法无法被cglib代理,进而无法使用代理方法
解决方法:使用public

方法是final的

原因:因为代理需要重写方法,但是final方法无法被重写,所以无法被代理,而无法被代理所以就无法使用@Transactional注解来管理事务
解决方法:去掉final

单独的线程调用方法

原因:事务是跟连接绑定的,而一个连接是一个线程,新开了一个线程等于新开了一个事务,两个线程的事务管理不同

异常被吃掉

原因:事务回滚是根据异常进行的,手动进行异常处理不会回滚事务

类没被spring管理

原因:没进行bean注入,直接new无法使用spring的事务管理

管理事务的方式

1.使用编程式事务,beginTransaction(), commit(), rollback()
2.基于TransactionProxyFactoryBean的声明式事务管理
3.基于@Transactional的声明式事务管理
4.基于Aspectj AOP配置事务
5.使用分布式事务进行管理,2PC,3PC、TCC

如何避免事务失效

1.使用编程式事务,手动提交
2.避免慢查询
3.不要再事务中加入耗时操作,如rpc,大批量插入修改等

http://www.yayakq.cn/news/760717/

相关文章:

  • 目前我们的网站正在建设中南宁百度seo排名价格
  • 洛阳住房和城乡建设厅网站动画设计专业要艺考吗
  • 山东青岛网站建设业网站建设
  • 微网站建设完不知道怎么推广咋办widget earth wordpress
  • 南京移动网站建设效果好百度明星人气榜排名
  • 做果蔬零售的网站红酒公司网站建设模板6841
  • 网站后台怎么做的编程python适合多大孩子学
  • 吉安网站建设兼职seo是什么化学名称
  • 移动端网站开发教程python线上培训比较好的机构
  • wordpress伪造ip泉州市做网站优化
  • 廊坊网站制作报价河南省做网站的公司有哪些
  • 亚马逊网站建设案例分析大泽山seo快速排名
  • 顺德网站建设策划wordpress weex
  • 嘉兴网站seo公司和恶魔做交易的网站
  • 新上线的网站怎么做优化直通车代运营
  • 网站开发策略都有啥html网站设计论文
  • 邱县专业做网站app模板制作软件免费下载
  • 中国建设官方网站登录汕头专业网页设计培训哪个好
  • 徐州企业网站推广公司网站建设费计入科目
  • 施坦威网站关于我们易企秀可以做微网站吗
  • 企业网站seo网址wordpress的数据库有多大
  • app开发软件财务预测口腔医院网站做优化
  • 网站开发绩效考核与薪酬公司招聘要求
  • 网站开发工具微软百度指数功能有哪些
  • 怎么把网站放到空间内蒙包头网站开发
  • 网站升级改版需要多久网站一定也做数据库吗
  • 东营远见网站建设公司保定网络公司电话
  • 网站建设yankt网站备案费一般是多少
  • 门户 网站开发周期桂林论坛网网站电话
  • 茂名市建设局网站企业做网站的钱怎么做账