尝试在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'
预期:应部署并运行 实际:标题错误
答案 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 CFEnv从spring.datasource
自动设置VCAP_SERVICES
属性(一旦从项目中删除了连接器)。