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

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的生成,可以是直接创建后配置,也可以是

No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:_第1张图片
在这里插入图片描述

BeanDefinitionReaderUtils.registerBeanDefinition(dynamicDataSourceBeanDefinitionHolder, beanDefinitionRegistry);

你可能感兴趣的:(报错,spring,追源码)