Kotlin Spring启动@ConfigurationProperties列表

我想用Kotlin读取yaml配置文件,下面是我的代码: application.yml

 message: messages: - name: abc type: aaa size: 10 - name: xyz type: bbb size: 20 

MessageConfig.kt

 package com.example.demokotlin import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.context.annotation.Configuration import java.math.BigDecimal @ConfigurationProperties(prefix = "message") @Configuration class MessageConfig { lateinit var messages: List } class Message { lateinit var name: String lateinit var type: String lateinit var size: BigDecimal } 

类使用配置:

 package com.example.demokotlin import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component @Component class MessageService @Autowired constructor(private var messageConfig: MessageConfig) { fun createMessage(): String { println("in service........") println(messageConfig.messages[0].name) println(messageConfig.messages[0].type) println(messageConfig.messages[0].size) return "create a message......." } } 

看起来如果yaml文件有数组/列表,Kotlin不能正确读取它,但它没有数组。

我有完全相同的代码,适用于Java。 我的Kotlin代码有问题吗?

你遇到这个错误 。 只需改变

 lateinit var messages: List 

 var messages: MutableList = mutableListOf() 

使您的代码工作。 这是一个完整的工作示例 。