本篇文章要讨论的一个问题点, 给Spring和Mybatis设置不同的数据库数据源会怎样?
注意. 正常情况下一定要给Spring和Mybatis设置相同的数据库数据源....程序运行之后,看一下,Spring容器中存在的UserServiceImpl实例和UserMapper实例`长啥样`....如果一个线程在执行的过程使用了多个数据库数据源, 那么一个数据源对应一条数据库连接的关系会被保存到ThreadLocal中, 保证线程在操作一个数据库的时候只会使用一条相同的数据库连接....如上图, 由于文章开头, 在配置事务管理器和SqlSessionFactory时,分别设置了不同的数据源, 最终就导致, 事务管理器开启事务的时候, 使用的数据源A创建的一个数据库连接....而Mybatis在进行实际操作数据库的时候, 使用的数据源B创建的一个数据库连接. 造成了开启事务和进行实际数据库操作的连接不是同一个连接.