emmm应该是有manager的 因为指定了@Primary 不然容器启动的时候创建sessionFactory就因为多个DataSource异常了,后面会滚的时候manager为null也会有运行时异常,因为@Primary autoconfig 的@ConditionalOnSingleCandidate是生效的,应该是用primary构造的manager,跟到后面DruidPooledConnection也是用mysql的jdbc实现去做rollback,后面倒是有这样一个check:

但是最后应该会抛sqlException异常才是,我用shardingConnection测试的时候这里是可以放过的。要看下DriudPooledConnection是构造过程是怎样的,
DriudPooledConnection是通过DruidDataSource.getConnection构造的最后跟到这里:



我调的的时候拿到的connection确实是true的,拿到connection之后 sharding调用了这个方法:
org.apache.shardingsphere.shardingjdbc.jdbc.adapter.WrapperAdapter#replayMethodsInvocation



这里刚好有个Method对象setAutoCommit(false)



jdbcMethodInvocations的初始化有多很多场景 其中有个场景是针对autocommit的



一层层堆栈跟过去:
org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin:
org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection#setAutoCommit
org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractConnectionAdapter#setAutoCommit
所以DataSourceTransactionManager在事务开始的时候是有调用conn.setAutoCommit(false),具体的实现留给了conn的实现类。
这个conn的引用是怎么获得的呢?
通过manager的内部类得到org.springframework.jdbc.datasource.ConnectionHolder,而ConnectionHolder是在
org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin
通过datasource.getConnection得到:

所以问题回到datasource.getConnection

最新文章

  1. strace命令(收集整理,常看常新)
  2. 记2012-2013年一路的Windows Phone历程
  3. 浅谈Dynamic 关键字系列之三(上):ExpandoObject, DynamicObject, DynamicMetaObject
  4. Linux常用命令-入门
  5. PHP preg_replace() 正则替换所有符合条件的字符串示例
  6. Js 对象三
  7. CDN调度器HAProxy、Nginx、Varnish
  8. SQL中的delete和TRUNCATE的用法
  9. 在linux中配置tomcat
  10. 为什么国外程序员爱用苹果Mac电脑?(转)
  11. Java和Flex整合报错(四)
  12. LDA && NCA: 降维与度量学习
  13. [Codeforces235D]Graph Game——概率与期望+基环树+容斥
  14. Python加密保护解决方案
  15. python自动化测试入门篇-jemter
  16. Wampserver 403问题
  17. Codeforces Round #228 (Div. 1)
  18. spring/spirng boot添加fluent日志-aop
  19. D12——C语言基础学PYTHON
  20. Linux磁盘空间扩容(LVM)

热门文章

  1. Redis 数据结构与编码技术 (Object Encoding)
  2. 多快好省地使用pandas分析大型数据集
  3. Luogu P4546 [THUWC2017]在美妙的数学王国中畅游
  4. HP UNIX 查看 修改IP地址
  5. 需要加强NB-IoT网络优化和终端监管
  6. Linux下的django项目01
  7. Statistical physics approaches to the complex Earth system(相关系统建模理念方法的摘要)
  8. C语言中利用clock设计一个简单的定时器
  9. 自定义泛型方法, 三级排序, low版,待升级
  10. 了解TypeScript