my project have 6 datasources. but i Qualifier the task datasource and transactionManager. on run taskRepository.createTaskExecution() throws exceptions:
org.springframework.context.ApplicationContextException: Failed to start bean 'taskLifecycleListener'; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available: expected single matching bean but found 6: baseDataTransactionManager,baseOrderTransactionManager,bizBusinessTransactionManager,bizPlatformTransactionManager,hqhbTransactionManager,hqhbTaskTransactionManager
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:893) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
at com.codingapi.tm.hqhbserver.HqhbServerApplication.main(HqhbServerApplication.java:15) ~[classes/:na]
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available: expected single matching bean but found 6: baseDataTransactionManager,baseOrderTransactionManager,bizBusinessTransactionManager,bizPlatformTransactionManager,hqhbTransactionManager,hqhbTaskTransactionManager
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1144) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:411) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:344) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:337) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:395) ~[spring-tx-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:284) ~[spring-tx-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) ~[spring-tx-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.cloud.task.repository.support.SimpleTaskRepository$$EnhancerBySpringCGLIB$$7acd47dc.createTaskExecution(<generated>) ~[spring-cloud-task-core-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.cloud.task.listener.TaskLifecycleListener.doTaskStart(TaskLifecycleListener.java:273) ~[spring-cloud-task-core-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.cloud.task.listener.TaskLifecycleListener.start(TaskLifecycleListener.java:388) ~[spring-cloud-task-core-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
... 14 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:57504', transport: 'socket'
Process finished with exit code 1
that's my configuration code .
@Configuration
public class TaskDbConfiguration {
/**
* 返回data1数据库的数据源
* @return
*/
@Bean(name="hqhbTaskSource")
@ConfigurationProperties(prefix = "spring.datasource.db-hqhb-task")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
/**
* 返回data1数据库的事务
* @param ds
* @return
*/
@Bean(name = "hqhbTaskTransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("hqhbTaskSource") DataSource ds){
return new DataSourceTransactionManager(ds);
}
@Bean
public TaskConfigurer taskConfigurer(@Qualifier("hqhbTaskSource") DataSource dataSource,
@Qualifier("hqhbTaskTransactionManager") DataSourceTransactionManager transactionManager){
return new TaskConfigurer(){
private TaskExecutionDaoFactoryBean taskExecutionDaoFactoryBean
= new TaskExecutionDaoFactoryBean(dataSource, "task_");
@Override
public TaskRepository getTaskRepository() {
return new SimpleTaskRepository(taskExecutionDaoFactoryBean);
}
@Override
public PlatformTransactionManager getTransactionManager() {
return transactionManager;
}
@Override
public TaskExplorer getTaskExplorer() {
return new SimpleTaskExplorer(taskExecutionDaoFactoryBean);
}
@Override
public DataSource getTaskDataSource() {
return dataSource;
}
};
}
}
thanks .
my project have 6 datasources. but i Qualifier the task datasource and transactionManager. on run taskRepository.createTaskExecution() throws exceptions:
that's my configuration code .
thanks .