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

滨州网站开发信息流优化师培训

滨州网站开发,信息流优化师培训,wordpress 增加状态,制作网站教程类内部访问导致事务不生效原因: 注解Transaction的底层实现是Spring AOP技术,而Spring AOP技术使用的是动态代理。spring事务失效的原因就是动态代理失效的原因: 对于static方法和非public方法,注解Transactional是失效的,因为不…

类内部访问导致事务不生效原因:
注解@Transaction的底层实现是Spring AOP技术,而Spring AOP技术使用的是动态代理。spring事务失效的原因就是动态代理失效的原因:

  • 对于static方法和非public方法,注解@Transactional是失效的,因为不会代理并拦截这些方法。
  • 子调用(直接this调用带有事务方法),也因为直接调用自身对象的方法,直接在目标对象内部执行,不经过代理,因此事务也失效。
  • 还有目标对象实例化吗?

主要讲解 4 种事务不生效的 Case:

  • 类内部访问:A 类的outer方法没有标注 @Transactional,inner方法标注 @Transactional,在 outer 里面直接调用inner(如用this.关键字);
  • 私有方法:将 @Transactional 注解标注在非 public 方法上;
  • 异常不匹配:@Transactional 未设置 rollbackFor 属性,而方法返回 Exception 等异常;或是事务方法内部产生的异常被catch后没有向外部抛出;
  • 多线程:主线程和子线程的调用,线程抛出异常

即使Spring已经管理了某个事务方法(即为这个方法创建了代理),当这个方法内部调用私有方法时,这个私有方法的调用仍然会绕过代理对象,
原来不止创建了代理对象,还有目标对象的吗?还是说先创建目标对象,再创建代理?当在包装的代理中使用invoke的时候,是不是已经是目标对象亲自操作了?
似乎这里要先看spring启动、创建bean的原理

我目前的想法与可能的误区:
Bean都是代理对象?注入的都是代理? 是的,注入的都是实现了同一接口的Spring代理,因此他们也拥有接口中定义的方法,用起来就像真正的对象一样。
如果是的话,那还要真正的目标对象干什么?什么时候创建的真正对象?从创建代理的 private Object target;来看,目标对象还是被创建了。当我们this子调用的时候,虽然外部outer方法是调用的代理类的,但是代理方法内部还是调用了目标对象的原方法,而在其中的this调用是不经过代理对象的。
但我记得反射是可以打破私有的限制的,为什么无法代理私有方法?
答:接口忘了有没有私有方法,反正不会被目标对象实现。jdk动态代理是通过接口生成代理对象,自然不会有目标对象的私有方法。

被代理方法调用私有方法,私有方法了里的mapper进行数据库操作,会和父方法在一个连接里吗?是的话又在一个事务管理器里吗?调用mapper方法的时候是怎么选择连接?

解决方法:

事务自调用: @Resource 获取自己的代理对象
编程式事务管理:TransactionTemplate

异常控制

(请回忆动态代理:用代理类包裹了原方法。因此,目标类方法中产生的异常可以传递到代理类)
对于一个被标记了@Transactional的方法,
如果内部发生异常,但是自己有catch语句,可以考虑在catch块中做相应处理,这样异常不会被扔出方法,也就不会被外部的代理对象捕获,也就不会回滚;
如果catch后仍然想回滚,就再手动throw异常,或者使用编程式事务管理,编写代码TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();来让当前事务回滚。

多线程事务

Spring事务管理的传播机制是使用 ThreadLocal 实现的。因为 ThreadLocal 是线程私有的,所以 Spring 的事务传播机制是不能够跨线程的。
根据结果统一回滚。不过太复杂了不如手动处理。这个业务也挺少见,我都后悔记这一章节笔记了。

http://www.hrbkazy.com/news/46295.html

相关文章:

  • 北京大兴最专业的网站建设公司百度top风云榜
  • 番禺网站建设系统外贸平台排行榜前十名
  • 没有初中毕业证怎么提升学历怎么优化网站关键词排名
  • 宿迁做网站的公司百度推广客服
  • 做pc端网站新闻个人外包接单平台
  • 孝感 网站建设信息流推广的竞价机制是
  • 怎让做淘宝网站夫唯seo教程
  • wordpress反广告屏蔽湖南seo优化排名
  • 装配式建筑网站seo品牌优化整站优化
  • 国外外贸网站有哪些问题营销推广投放
  • 网站维护企业seo网络优化教程
  • 陕西农产品网站建设石家庄全网seo
  • 优秀设计网站销售网站有哪些
  • 网站内页怎么做301定向西安百度
  • 深圳网站建设制作公司天津外贸seo推广
  • 网站开发h5页面惠州seo网站管理
  • 做网站如何把栏目放到首页凡科网免费建站官网
  • 网站建设与管理好找工作吗惠州seo代理
  • 上海比较好的网站建设公司博客网站登录
  • 网络工程专业毕业生设计百度seo按天计费
  • 网站开发商城1688手机优化助手下载
  • 呼和浩特做网站的公司有哪些武汉整站seo数据上云
  • python网站开发pdf电商推广联盟
  • 南通网站seo陕西网站关键词自然排名优化
  • 博彩网站做维护网站交易平台
  • 做一家网站体验式营销案例
  • 织梦网站如何做伪静态在线的crm系统软件
  • 网站建设应用技术关于软文营销的案例
  • 网站开发方式有上海网站seo诊断
  • 微商城微网站开发富阳网站seo价格