Spring @YAML中以Kotlin格式列出的值

Spring @YAML中以Kotlin格式列出的值,spring,kotlin,yaml,Spring,Kotlin,Yaml,我正试图用Kotlin初始化Spring Boot项目中YAML文件中的属性列表 对于普通字符串,它可以正常工作,但在尝试初始化列表时失败,出现以下错误: 创建bean时出现意外异常;嵌套异常为java.lang.IllegalArgumentException:无法解析值“${foo.bar}”中的占位符“foo.bar” Kotlin代码具有以下构造函数参数 @Value("\${foo.bars}") val foobars: List<String> 我是否需要在列表和普

我正试图用Kotlin初始化Spring Boot项目中YAML文件中的属性列表

对于普通字符串,它可以正常工作,但在尝试初始化列表时失败,出现以下错误:

创建bean时出现意外异常;嵌套异常为java.lang.IllegalArgumentException:无法解析值“${foo.bar}”中的占位符“foo.bar”
Kotlin代码具有以下构造函数参数

@Value("\${foo.bars}")
val foobars: List<String>
我是否需要在列表和普通字符串之间执行一些不同的操作?

对于Kotlin,所描述的解决方案可以稍作更改:

@Component
@ConfigurationProperties("foo")
class FooBarsProperties {
  lateinit var bars: List<String>
}
@组件
@配置属性(“foo”)
类别FooBarsProperties{
lateinit变量栏:列表
}

只需在需要的地方注入FooBarsProperties。不要忘记将@EnableConfigurationProperties添加到一些配置类中。

您是否尝试使用数组而不是列表?现在尝试,得到相同的错误:“java.lang.IllegalArgumentException:无法解析值“${foo.bars}”中的占位符'foo.bars'。您定义了属性值吗?在我看来,问题在于Spring找不到属性。看起来我使用的语法是错误的或不受支持的,我使用了您在文章中看到的语法,但似乎逗号分隔列表可以解决问题。Kotlin中也有解决方法:
@Component
@ConfigurationProperties("foo")
class FooBarsProperties {
  lateinit var bars: List<String>
}