一、下载与运行
本文使用 Seata 1.1.0:https://github.com/seata/seata/releases
Windows 环境下双击 bin/seata-server.bat 启动 Seata Server
二、结合 MyBatis 使用
以 Service1 为例
2.1 添加引用
1 | <dependency> |
2.2 添加配置
2.2.1 registry.conf
放置在 resources 目录,内容详见代码,均采用了默认配置
2.2.2 file.conf
放置在 resources 目录,内容详见代码,均采用了默认配置
2.2.3 yml 配置
1 | spring: |
注意:
file.conf 中 vgroup_mapping 的 key 值为 my_test_tx_group:
1 | service { |
则 yml 中 tx-service-group 的值也必须为 my_test_tx_group;如果 vgroup_mapping 的 key 值改为 abcdefg,则 yml 中 tx-service-group 的值也必须为 abcdefg,即这两个值必须保持一致,否则会报错:
1 | no available service 'null' found, please make sure registry config correct |
2.2.4 添加数据源配置
1 | @Configuration |
在2.2.0.RELEASE及以后,数据源代理自动实现了,不需要再手动去配置一个代理类,官方文档还需要配置 DataSourceProxy 应该是文档没有及时更新
2.2.5 添加 undo_log 表
在业务相关的数据库中添加 undo_log 表,用于保存需要回滚的数据
1 | CREATE TABLE `undo_log` |
2.3 使用
添加 @GlobalTransactional 注解即可
1 | @Service |
三、结合 MyBatis-Plus 使用
与在 MyBatis 中使用类似,区别在于数据源的配置
3.1 错误配置
1 | @Configuration |
上面配置是参考 seata-samples 中的配置,虽然可以正常使用,但是造成 MyBatis-Plus 的插件如分页等不生效
3.2 正确配置
1 | public class DataSourceProxyConfig { |
仅配置 DataSource 即可
完整代码:GitHub
Seata 1.1.0 及之后版本支持直接在 application.yml 添加配置,可以替换掉 registry.conf 和 file.conf,本人暂未测试
参考