字符串连接可以用于包含SpEL的应用程序yml值吗?

时间:2017-06-15 12:07:52

标签: spring yaml applicationcontext spring-el

我正在尝试定义一个类似于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

vcap.services.compose-for-mysql.credentials.uri设置为mysql://xxxx:xxxx@xxxx.1.dblayer.com:28018/compose的位置。

我需要网址看起来像这样:

jdbc:mysql://xxxx:xxxx@xxxx.1.dblayer.com:28018/compose?useSSL=true&requireSSL=true&verifyServerCertificate=true

但是,Spring似乎无法处理这个问题:

  

无法获取JDBC连接;嵌套异常是java.sql.SQLException:驱动程序:com.mysql.jdbc.Driver@6c6efbc8为URL返回null:jdbc:$ {vcap.services.compose-for-mysql.credentials.uri}?useSSL = true& requireSSL =真安培; verifyServerCertificate =真

有没有办法可以使用yaml文件构建url,还是需要使用其他方法,比如xml配置?

更新

我试过了:

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

0 个答案:

没有答案