今天在使用springboot做多数据源学习的时候,在测试不同数据插入不同数据库时,出现了如题“available: expected single matching bean but found 2”的错误,错误大概的意思是指配置文件中 事务匹配到了俩个事务管理,系统不知道具体指向谁,错误如下
随后,我就此错误上网查询,在使用@primary注解注解其中一个数据源事务管理后,该数据源的事务功能成功起效,然而第二个数据源的事务功能依旧如上述错误一样
很显然这样是解决不了问题的,我们还是需要动态的切换事务管理,由于是多数据源就有多个事务管理(目前还没有开始尝试多数据源事务集成功能),那么如何动态切换事务管理呢?要知道**Spring的事务与数据源是绑定的。也就说,如果你开启了事务,那么数据源已经绑定了。那么这个时候,你在去切换数据源就无效了。也就是说要想有效,那么就要要在事务开启之前就把数据源切换好。**该句参考https://blog.csdn.net/pengdandezhi/article/details/78855261
随后我在蚂蚁课堂的视频学习中,找到了解决的方法,那就是在每个@transactional注解后面添加(transactionManager=“test1DataSourceTransactionManager”)具体指向要调用的事务管理, 问题便迎刃而解
available: expected single matching bean but found 2错误 小记
最新推荐文章于 2024-10-15 16:37:24 发布