从spring-bootapplication.yaml中的其他位置引用配置部分



我正在application.yaml中配置spring-boot-kafka流。我需要配置输出主题的属性:

producer:
topic.properties:
cleanup.policy: compact
retention.ms: 604800000

因为我在整个文件中都有相同的配置,所以我想在哪里定义值:

my:
policy: compact
retention: 604800000
producer:
topic.properties:
cleanup.policy: ${my.policy}
retention.ms: ${my.retention}

topic.properties只是传递给底层kafka库的通用映射。为了使配置更加灵活,我想参考producer.topic.properties中的my部分。因此,当添加新的kafka属性时,只更新my部分。

我试过了:

producer:
topic.properties: ${my}

但这不起作用——${my}my.toString()取代,并且在需要Map的位置获取String时配置失败。

我在找一些章节占位符。例如,在OpenAPI规范中,您可以执行类似的操作:

my:
policy: compact
retention: 604800000
producer:
topic.properties:
$ref: '/my'

我知道基本的YAML不支持引用。但是spring-boot中是否有允许引用其他配置部分的内容?

您可以引用其他属性,但每次只能引用一个:

my:
policy: compact
retention: 604800000
producer:
topic.properties:
policy: ${my.policy}
retention: ${my.retention}

最新更新