修改Mybatis-Plus源码利用反射支持Seata代理数据源
准备工作
1.拉取mybatisplus项目源码
通过以下代码改造实践.
开始
1.阅读mp的启动类源码
1 | /* |
2.找到创建sqlSessionFactory的方法
1 | "SpringJavaInjectionPointsAutowiringInspection") ( |
3.修改注入DataSource处的代码:
1 | "SpringJavaInjectionPointsAutowiringInspection") ( |
4.打包发往自己的私服使用(此处不再说明)
总结
要点代码:
1 | try { |
其实就是利用反射来查看seata的DataSourceProxy类是否存在,存在我们就把mp准备注入的datasource改为被seata代理过后的,这样就可保障seataAT模式在二阶段执行回滚提交等操作正常使用