繁体   English   中英

Spring 引导 - 使用自定义 yml 标签扩展 yml 配置

[英]Spring Boot - extend yml configuration with custom yml tags

我需要将 yaml 锚引用与application.yml中的字符串连接一起用于 Spring 引导应用程序。 动机是重用现有配置而不是复制它们。 例如,我们有以下application.yml

sources:
  - filter:
      expression: &mainFilter
                    level > 100
  - filter:
      expression: *mainFilter
  - filter:
      expression: *mainFilter and level < 200

我需要将其解决为以下问题:

sources:
  - filter:
      expression: &mainFilter
                    level > 100
  - filter:
      expression: level > 100
  - filter:
      expression: level > 100 and level < 200

expression: *mainFilter将被正确解析,因为它是 yml 锚点,但expression: *mainFilter and level < 200将不起作用,因为 yml 不支持具有串联的锚点(应用程序将在应用程序启动时失败)。 根据yml string concatenation with custom tags ,yml 具有我们可以定义的自定义标签的概念,例如expression: ,concat [*mainFilter, 'and level < 200'] 是否可以在 Spring Boot yml 配置中定义和注册我们自己的自定义标签?

我有同样的需求——从现有的属性值中组合新的属性值——在像你一样首先想到它需要自定义标签之后,在 spring 中,你可以使用属性占位符

mainFilter: "level > 100"
sources:
  - filter:
      expression: ${mainFilter}
  - filter:
      expression: "${mainFilter} and level < 200"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM