243 Star 2.7K Fork 562

MyBatis-Flex/MyBatis-Flex

[Bug]: com.mybatisflex.spring.boot.FlexTransactionAutoConfiguration的`transactionManager`定义,未提供客制化选择

已完成
创建于  
2024-02-22 20:04

这个 Bug 是否已经存在:

如何复现:

自定义DataSourceTransactionManager的bean,名称为transactionManager,提示Bean定义重复

预期结果:

FlexTransactionAutoConfiguration上添加@ConditionalOnMissingBean(TransactionManager.class)

实际结果:

项目启动报错

截图或视频:

关联版本:

v1.7.9

评论 (5)

witt 创建了任务 1年前
witt 添加了
 
bug
标签
1年前
展开全部操作日志

换个名字试试呢?

5656388 wittplus 1699925437 witt
回复 王帅 成员
1年前

换名字肯定是可以的

这样讲我的场景吧,一个服务需要8个数据源,有oracle ,sqlserver,postgresql等等,每个库的表是不一样的,所以我一共有8个DataSource对象的bean,8个sqlSessionFactory,然后通过@MapperScan(basePackages = { "ds1.mapper","ds2.mapper" },sqlSessionFactoryRef = "ds1SqlSessionFactory",sqlSessionTemplateRef = "ds1SqlSessionTemplate")绑定扫描

如果这个项目客制化的用户未提供数据源,使用的http接口的方式,那这个项目只有一个DataSource对象的bean,1个sqlSessionFactory

默认的DataSourcedatasource,默认的SqlSessionFactorysqlSessionFactory

Spring原生也是支持这种拓展的,@ConditionalOnSingleCandidate(DataSource.class)保证只有在单数据源才生效

输入图片说明

我改个名字没有问题,但是项目中任然存在一个sqlSessionFactory的bean,这个Bean会被作为@Transactional注解的默认事务管理器,其他协作者并不指定,他不可能每次使用加@Transactional(transactionManager = "xxxTransactionManager", rollbackFor = Exception.class)

这是mybatis flex设计的问题所在

61279 fuhai 1716893681 Michael Yang 拥有者
回复 witt
1年前

看到你提交了这个 pr,这个思路是可以被合并的,但是通过提交的代码看到应该还有许多问题,在 很多框架 中,默认是有 transactionManager 的,而 spring 或其他框架自带的 transactionManager 在用户未知的情况下,可能覆盖掉 flex 的 transactionManager,这个并不是我们想看到的。
我们希望看到的是,在默认情况下,flex 的 transactionManager 应该覆盖掉其他框架的 transactionManager。除非手动覆盖,所以,建议提交的 pr 应该是 “手动配置覆盖” 的思路。

61279 fuhai 1716893681 Michael Yang 拥有者
回复 Michael Yang 拥有者
1年前

亦或者是,为 flex 提供一个较高权重的排序,保证能够覆盖常见的框架。

5656388 wittplus 1699925437 witt
回复 Michael Yang 拥有者
1年前

意思明白,pull request又改了一下,这样修改能满足绝大部分场景了,比Spring的早就可以

witt 通过合并 Pull Request !425: FlexTransactionAutoConfiguration 配置优先级修改任务状态待办的 修改为已完成 1年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
7984572 suomm 1698661375 5656388 wittplus 1699925437 61279 fuhai 1716893681
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex

搜索帮助