我需要通过yaml属性文件绑定POJO列表,但是我不走运才能使其工作。
我的application.yml
有以下几行:
printer:
printers:
- deviceNo: abc
key: 123
和PrinterProperties
这样:
@Component
@ConfigurationProperties(prefix = "printer")
class PrinterProperties {
var printers: List<Printer> = listOf()
}
但是字段printers
并未填充application.yml
值。
我将演示推送到github repository上来演示此问题。
答案 0 :(得分:1)
如Externalized Configuration页面上的Spring Boot文档所述,您可以绑定示例中的属性,只要它们满足以下条件之一即可:
1)class属性有一个setter
2)用可变值初始化。
listOf()
将为您提供一个不变的值,因此它将不起作用。
希望它有所帮助! :)
答案 1 :(得分:0)
printer:
printers:
-
deviceNo: abc
key: 123
您的Yaml文件应该是这样的。
答案 2 :(得分:0)
根据安迪·威尔金森(Andy Wilkinson)的建议:POJO应该具有默认的构造函数。所以我用以下方式更改了POJO:
class Printer {
var deviceNo: String? = null
var key: String? = null
}
它现在可以工作。