前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:

No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:

作者头像
MickyInvQ
发布2020-09-27 10:56:45
1.8K0
发布2020-09-27 10:56:45
举报
文章被收录于专栏:InvQ的专栏
代码语言:javascript
复制
2020-03-05 16:30:01.380 ERROR 12216 --- [rtTask_Worker-1] i.e.l.e.h.i.DefaultJobExceptionHandler   33   : Job 'com.task' exception occur in job processing org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available: expected single matching bean but found 5: aaaTransactionManager,bbbTransactionManager,cccTransactionManager,dddTransactionManager,eeeTransactionManager
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1041)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:345)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:370)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:272)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
    at com.service$$EnhancerBySpringCGLIB$$42f7daa9.retry(<generated>)

问题的原因在于早期项目中只有一个数据源,也只有一个与该数据源绑定的事务管理器,因此直接使用@Transactional()注释时Spring会帮助我们自动识别出来,但是后期当项目中同时出现两个数据源和两个相关的事务管理器时,在使用@Transactional()注解时如果不直接指定,Spring就不知道具体使用哪一个事务管理器来进行事务管理了,因此需要通过某种方式来具体指定一下。

指定的方式可以通过使用 @Transactional(transactionManager = “aaaTransactionManager”) 来进行指定

ps:

关于bean的生成,可以是直接创建后配置,也可以是

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码语言:javascript
复制
BeanDefinitionReaderUtils.registerBeanDefinition(dynamicDataSourceBeanDefinitionHolder, beanDefinitionRegistry);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档