不开事务几种情形

① @Transactional写在了private方法上

org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource#computeTransactionAttribute

② 普通方法doTask3调用同一个类中有注解的方法doTask3Out, 并没有开启事务

参考:

https://www.cnblogs.com/milton/p/6046699.html

https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html#transaction-declarative-annotations

https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html

同一个事务中会做 多个Dao操作,它们使用的jdbc connection是同一个,因为在同一个线程中,connection id可以保存在ThreadLocal中

③异步线程是否开始新事务,和非异步的主线程有关系吗

    @Transactional
public void doTask1() {
doTask2In(); //此处方法3上面的注解失效了!!!!
new Thread(()->{doTask3Out();}).start();
}
这个情况和情形2类似. 多线程编程时要注意, 没事别乱开线程

解决方法是使用AspectJ拦截事务, 不使用spring 默认的aop拦截事务

事务开始与连接获取的源码分析
org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin
org.springframework.transaction.annotation.Isolation中定义了几个事务的隔离级别:默认,读已提交 , 读未提交,序列化

多数据源配置: https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html#tx-multiple-tx-mgrs-with-attransactional

Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。你当然可以在接口上使用 @Transactional 注解,但是这将只能当你设置了基于接口的代理时它才生效。因为注解是 不能继承 的,这就意味着如果你正在使用基于类的代理时,那么事务的设置将不能被基于类的代理所识别,而且对象也将不会被事务代理所包装(将被确认为严重的)。因 此,请接受Spring团队的建议并且在具体的类上使用 @Transactional 注解。

参考

Fescar分布式事务 https://my.oschina.net/keking/blog/3011509


最新文章

  1. 1Z0-053 争议题目解析25
  2. uva 1584.Circular Sequence
  3. jquery 滚动到底部加载
  4. Python第三方常用工具、库、框架等
  5. hibernate一个注册小例子
  6. 我的JAVA基础学习史1
  7. Spring的单例模式底层实现
  8. git获取远程服务器的指定分支
  9. js中一些关于比较左右两边的值的题目
  10. FR报表 FileName
  11. 使用jieba导入引用方法时,报错AttributeError: module 'jieba' has no attribute 'cut'
  12. MySQL下concat函数中null值问题
  13. Spark一个简单案例
  14. X264编码流程详解(转)
  15. php中将SimpleXMLElement Object数组转化为普通数组
  16. Redis、Mongodb、memcache区别在哪里?
  17. Nginx+ffmpeg的HLS开源服务器搭建配置及开发详
  18. linux ssh 命令使用解析
  19. 什么是Maven?
  20. grequests----golang的requests库

热门文章

  1. apache重写规则详解
  2. clearfix的用法(转)
  3. linux中创建图片服务器减轻传统服务器的压力
  4. 安装nodemon热启动
  5. PCL — Point Pair Feature 中层次点云处理
  6. Luogu 4323 [JSOI2016]独特的树叶
  7. java反射机制的进一步理解
  8. 2013蓝桥杯JavaA组T10 大臣的旅费(树的直径)
  9. (转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
  10. 浏览器显示XML文档