创建类路径资源中定义的名称为'jpaVendorAdapter'的bean时出错

时间:2019-08-26 12:39:44

标签: sql-server spring-boot spring-data-jpa cloudfoundry mssql-jdbc

尝试在Cloud Foundry中部署springboot项目。出现以下错误。

  

原因:   org.springframework.beans.factory.UnsatisfiedDependencyException:   创建名称为'entityManagerFactoryBuilder'的Bean时出错   类路径资源   [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]:   通过方法表达的不满意依赖性   'entityManagerFactoryBuilder'参数0;嵌套异常为   org.springframework.beans.factory.BeanCreationException:错误   创建在类路径中定义的名称为“ jpaVendorAdapter”的bean   资源   [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]:   通过工厂方法实例化Bean失败;嵌套异常为   org.springframework.beans.BeanInstantiationException:失败   实例化[org.springframework.orm.jpa.JpaVendorAdapter]:工厂   方法'jpaVendorAdapter'抛出异常;嵌套异常为   java.lang.RuntimeException:驱动程序   com.microsoft.sqlserver.jdbc.SQLServerDriver声称不接受   jdbcUrl,$ {vcap.services.xxx.credentials.jdbcUrl}

application.properties

spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

spring.datasource.url=${vcap.services.xxx.credentials.jdbcUrl}
spring.datasource.username=${vcap.services.xxx.credentials.username}
spring.datasource.password=${vcap.services.xxx.credentials.password}

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-web'

//cloud connector
implementation 'org.springframework.boot:spring-boot-starter-cloud-connectors'

//database
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'


implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc'

implementation group: 'com.microsoft.sqlserver', name: 'mssql-jdbc'

compile group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector'

预期:应部署并运行 实际:标题错误

1 个答案:

答案 0 :(得分:0)

您应该从项目中删除'org.springframework.boot:spring-boot-starter-cloud-connectors'group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector'依赖性。

当Spring Cloud Connectors jar放在类路径上时,它们将为VCAP_SERVICES中检测到的服务创建连接bean(例如,在您的情况下为Datasource bean)。由于连接器正在创建连接bean而不是Spring Boot,因此您的spring.datasource属性将被忽略。从项目中删除连接器将允许Boot使用您的属性创建连接。

或者,您可以选择使用Java CFEnvspring.datasource自动设置VCAP_SERVICES属性(一旦从项目中删除了连接器)。