【发布时间】:2022-11-14 06:44:04
【问题描述】:
我正在 Kotlin 开发一个 Spring Boot 项目。我想从 application.yml 文件中读取 <String,Int> 对列表到可变列表。列表的类型如下。
@Configuration
@EnableAutoConfiguration
@ConfigurationProperties(prefix = "user-parameters")
class UserParameters {
/**
* Owners of the knapsacks and their capacity.
*/
var knapsacks = mutableListOf<Pair<String, Int>>()
init {
...
}
}
在 application.yml 文件中,我尝试使用以下配置。
...
user-parameters:
knapsacks:
- "[James]": 102
- "[Mary]": 185
但是,这会失败并出现以下错误。
***************************
APPLICATION FAILED TO START
***************************
Description:
Binding to target [Bindable@3a7b2e2 type = java.util.List<kotlin.Pair<java.lang.String, java.lang.Integer>>, value = 'provided', annotations = array<Annotation>[[empty]]] failed:
Property: user-parameters.knapsacks[0][James]
Value: 102
Origin: class path resource [application.yml] - 28:17
Reason: The elements [user-parameters.knapsacks[0][James],user-parameters.knapsacks[1][Mary]] were left unbound.
Property: user-parameters.knapsacks[1][Mary]
Value: 185
Origin: class path resource [application.yml] - 29:16
Reason: The elements [user-parameters.knapsacks[0][James],user-parameters.knapsacks[1][Mary]] were left unbound.
Action:
Update your application's configuration
如果我将类型更改为Map<String, Int>,则代码有效,但由于实现细节我需要Pair<String, Int>。
我也尝试了以下注释,但无济于事。
...
user-parameters:
knapsacks:
- "[James]": 102
"[Mary]": 185
...
user-parameters:
knapsacks:
"[James]": 102
"[Mary]": 185
...
user-parameters:
knapsacks:
- { "[James]": 102 }
- { "[Mary]": 185 }
如何从 application.yml 读取 String,Int 对到可变列表?
【问题讨论】:
标签: spring-boot kotlin yaml