【问题标题】:Spring SpEL expression evaluation for an application yml property应用程序 yml 属性的 Spring SpEL 表达式评估
【发布时间】:2020-12-03 08:02:45
【问题描述】:

我正在尝试使用 Spring SpEL 表达式为我的 application.yml 配置文件中的属性派生一个值,但看起来该表达式没有得到评估。 这是我的 application.yml sn-p:

spring:
  profiles: local
  cloud.client.hostname: abc.pqr.xyz.lmn.westus.env.company.com
  boot:
    admin:
      client:
        instance:
            metadata.tags.environment: local
            metadata.tags.dc: "#{'${spring.cloud.client.hostname}'.split('.')[4]}"
        url: http://localhost:8079

在运行时,属性spring.boot.admin.client.instance.metadata.tags.dc 被评估为abc.pqr.xyz.lmn.westus.env.company.com.split('.')[4],期望它被评估为westus

我错过了什么?

【问题讨论】:

  • 通常在 java split() 中采用正则表达式作为输入,而不是单个字符。也许'.' 确实需要转义。试试.split('\\.')

标签: spring spring-boot spring-el


【解决方案1】:

application.yml 不支持 SpEL。

在代码中使用@Value("#{'${spring.cloud.client.hostname}'.split('\\.')[4]}" ) String property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多