我们在使用 mybatis结合spring事物都是按照标准的模板进行处理,这让我们只是知其然而不知其所以然。这让我情何以堪,所以必须阅读源码并加上调试,搞懂其处理机制
在使用mybatis-spring时,mybatis-spring 官网的入门教程中有如下说明:
只需要往spring容器中注入该bean就完成了mybatis与spring事物的关联。具体如何关联的,还是得阅读源码才能知晓。这个我们放到下次再说。
在阅读mybatis-spring的源码时我看到了
TransactionAwareDataSourceProxy.java 这个类,在网上搜了一下,并阅读spring的官方文档,大致是说,该类是普通数据源的代理类,可以让普通数据源感知到spring的事物上下文。刚开始并不是很理解这句话是什么意思。可以这样理解,如果我们想使用spring的事物,但不使用spring的jdbcTemplate,就使用的原生的jdbc代码,那么我们可以使用TransactionAwareDataSourceProxy将原生jdbc与spring事物关联起来。具体代码如下:
/** * 以上所有都是可以调用DataSourceUtils化简代码,而JdbcTemplate又是调用DataSourceUtils的。所以在 Spring文档中要求尽量首先使用JdbcTemplate,其次是用DataSourceUtils来获取和释放连接。至于 TransactionAwareDataSourceProxy,那是下策的下策。不过可以将Sprin