本篇文章要讨论的一个问题点, 给Spring和Mybatis设置不同的数据库数据源会怎样?
注意. 正常情况下一定要给Spring和Mybatis设置相同的数据库数据源....如果一个线程在执行的过程使用了多个数据库数据源, 那么一个数据源对应一条数据库连接的关系会被保存到ThreadLocal中, 保证线程在操作一个数据库的时候只会使用一条相同的数据库连接....Mybatis本来是想从ThreadLocal中拿到一个数据库连接的, 但是Mybatis持有的这个数据源在ThreadLocal中没有对应的数据库连接, 而ThreadLocal中已存在的数据源是在事务管理器的时候放入的...如上图, 由于文章开头, 在配置事务管理器和SqlSessionFactory时,分别设置了不同的数据源, 最终就导致, 事务管理器开启事务的时候, 使用的数据源A创建的一个数据库连接...., 发现ThreadLocal中已经有对应数据源的数据库连接了, 因为在事务管理器的时候, 由事务管理器已经把数据源对应的数据库连接放入到ThreadLocal中了.