我正在尝试定义一个 Spring 数据源 url,如下所示:
spring:
datasource:
url: "jdbc:${vcap.services.compose-for-mysql.credentials.uri}?useSSL=true&requireSSL=true&verifyServerCertificate=true"
username: ${vcap.services.compose-for-mysql.credentials.username}
password: ${vcap.services.compose-for-mysql.credentials.password}
driver-class-name: com.mysql.jdbc.Driver
Where vcap.services.compose-for-mysql.credentials.uri
被设定为mysql://xxxx:[email protected] /cdn-cgi/l/email-protection:28018/compose
.
我需要的网址如下所示:
jdbc:mysql://xxxx:[email protected] /cdn-cgi/l/email-protection:28018/compose?useSSL=true&requireSSL=true&verifyServerCertificate=true
然而,Spring 似乎无法处理这个问题:
无法获取 JDBC 连接;嵌套异常是 java.sql.SQLException: Driver:com.mysql.jdbc.Driver@6c6efbc8 returned null for URL:jdbc:${vcap.services.compose-for-mysql.credentials.uri}?useSSL=true&requireSSL=true&verifyServerCertificate=真的
有没有一种方法可以使用 yaml 文件构造 url,还是需要使用其他方法(例如 xml 配置)?
Update
我试过了:
url: ${'jdbc:'}${vcap.services.compose-for-mysql.credentials.uri}{'?useSSL=true&requireSSL=true&verifyServerCertificate=true'}
但得到错误:
java.lang.IllegalArgumentException: URL must start with 'jdbc'
还尝试过:
url: jdbc:${vcap.services.compose-for-mysql.credentials.uri}?useSSL=true&requireSSL=true&verifyServerCertificate=true
但得到错误:
Driver:com.mysql.jdbc.Driver@567443ab returned null for URL:jdbc:${vcap.services.compose-for-mysql.credentials.uri}?useSSL=true&requireSSL=true&verifyServerCertificate=true