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()
使您的代码工作。 这是一个完整的工作示例 。