spring cloud任务多个数据源的问题

问题描述 投票:0回答:2

我按照spring示例的指南在我的应用程序中配置了两个数据源:https://github.com/spring-cloud/spring-cloud-task/blob/master/spring-cloud-task-samples/multiple-datasources。我使用的spring引导版本是:2.0.0.RELEASE我使用的spring.cloud.task.version是:1.2.2.RELEASE。

这个应用程序在我的本地计算机上运行良好,但是当部署到AWS时,我得到了以下错误,类定义为:CustomTaskConfigurer.java。定义与此处相同:https://github.com/spring-cloud/spring-cloud-task/blob/master/spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/configuration/CustomTaskConfigurer.java

错误消息如下所示:

异常是org.springframework.beans.factory.BeanCreationException:创建名为'org.springframework.cloud.task.configuration.SimpleTaskConfiguration'的bean时出错:init方法的调用失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:在文件[/home/vcap/app/BOOT-INF/classes/com/xxx/configuration/CustomTaskConfigurer.class]中定义名称为'customTaskConfigurer'的bean时出错:Bean通过构造函数实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[com.xxx.configuration.CustomTaskConfigurer $$ EnhancerBySpringCGLIB $$ bc80cd46]:构造函数抛出异常;嵌套异常是java.lang.IllegalStateException:无法创建TaskExecutionDao。

spring-boot spring-cloud-dataflow
2个回答
0
投票

这个错误的根本原因是当我在本地开发应用程序时,我为postgresql配置了一个本地数据源bean,如下所示:@Bean @Primary @ConfigurationProperties(“spring.datasource”)public HikariDataSource sourceDataSource(){return DataSourceBuilder.create() .TYPE(HikariDataSource.class).build(); }

此bean读取application.properties文件中的属性,该文件标识本地postgres的用户名和密码url。当此应用程序部署到云时,它将连接到云数据库而不是本地数据库,这意味着URL,用户名和密码不再正确。添加云配置后,此错误消失了。

但是这个异常堆栈跟踪只告诉你它无法创建taskExecutionDao,当看到这样的错误消息时用户真的很难解决问题


0
投票

如果它是多个数据源问题,您可以尝试将其标记为@Primary。提供更好的堆栈跟踪很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.