【问题标题】:Issue with spring cloud task mutiple datasources春季云任务多个数据源的问题
【发布时间】:2019-05-18 14:42:49
【问题描述】:

我按照 spring 示例的指南在我的应用程序中配置了两个数据源:https://github.com/spring-cloud/spring-cloud-task/blob/master/spring-cloud-task-samples/multiple-datasources。 我使用的spring boot版本是: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: Unable to create a TaskExecutionDao。

【问题讨论】:

    标签: spring-boot spring-cloud-dataflow


    【解决方案1】:

    这个错误的根本原因是当我在本地开发应用程序时,我为 postgresql 配置了一个本地数据源 bean,如下所示: @豆角,扁豆 @基本的 @ConfigurationProperties("spring.datasource") 公共 HikariDataSource sourceDataSource() { 返回 DataSourceBuilder.create().type(HikariDataSource.class).build(); }

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-28
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-13
        相关资源
        最近更新 更多