在 YAML 中使用 Spring Boot SpEL

Use SpringBoot SpEL in YAML

是否可以在springboot yaml配置中使用SpEL调用静态方法函数?我想在端口范围内找到一个可用端口并设置服务器端口。我知道这可以通过编程方式完成,但很好奇是否可以仅在 YAML 中使用 SpEL 完成。我尝试了以下不起作用,因为它将 SpEL 视为 YAML 注释

server:
    port: #{T(org.springframework.util.SocketUtils).findAvailableTcpPort(8000,9000)}

这个失败了,因为它试图将 SpEL 设置为端口的字符串

server:
    port: "#{T(org.springframework.util.SocketUtils).findAvailableTcpPort(8000,9000)}"

The docs

Finally, while you can write a SpEL expression in @Value, such expressions are not processed from Application property files.

因此您需要将 SpEL 移至 @Value 注释,但可以通过 YAML 为其提供值。