最近在B站跟着狂神学SpringBoot,在第20集的时候碰上了给Map<String, List<Pet>> allPets这个变量绑定数据,用不同格式试了好多遍都出错,求大牛解答。(附Pet类和出错信息)
package com.atguigu.boot.bean;
//Pet类
public class Pet {
private String name;
private Double weight;
}
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-03-03 22:19:22.868 ERROR 2660 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Binding to target [Bindable@622d40d7 type = java.util.List<com.atguigu.boot.bean.Pet>, value = 'none', annotations = array<Annotation>[[empty]]] failed:
Property: person.allpets.sick[0].name
Value: tom
Origin: class path resource [application.yaml] - 25:16
Reason: The elements [person.allpets.sick[0].name,person.allpets.sick[1].name,person.allpets.sick[1].weight] were left unbound.
Property: person.allpets.sick[1].name
Value: jerry
Origin: class path resource [application.yaml] - 26:16
Reason: The elements [person.allpets.sick[0].name,person.allpets.sick[1].name,person.allpets.sick[1].weight] were left unbound.
Property: person.allpets.sick[1].weight
Value: 47
Origin: class path resource [application.yaml] - 26:30
Reason: The elements [person.allpets.sick[0].name,person.allpets.sick[1].name,person.allpets.sick[1].weight] were left unbound.
Action:
Update your application's configuration
试试现在你的yml文件里面定义出你的list
pets[0]:
name: xxx
weight:1.11
pets[1]
name: xxx
weight:1.11
这样你就定义出了一个list
然后再定义你的map 这时候配置list的时候使用 list: ${pets}
我没试过是个猜想 如果题主试了能成功麻烦告诉我一下、
配置类:
@Component
@ConfigurationProperties(prefix = "test")
public class MyConfig {
private Map<String, List<Pet>> data;
public Map<String, List<Pet>> getData() {
return data;
}
public void setData(Map<String, List<Pet>> data) {
this.data = data;
}
public static class Pet {
private String name;
private Double weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getWeight() {
return weight;
}
public void setWeight(Double weight) {
this.weight = weight;
}
}
}
配置文件:
test:
data:
key1:
- name: name1
weight: 1
- name: name2
weight: 2
key2:
- name: name3
weight: 3
- name: name4
weight: 4