使用yaml文件
- 实体类Person
@Component
@ConfigurationProperties(prefix = "person") //绑定yaml配置文件
public class Person {
private String name;
private Integer age;
private Map<String, Object> maps;
private List<String> lists;
private Dog dog;
public Person() {
}
public Person(String name, Integer age, Map<String, Object> maps, List<String> lists, Dog dog) {
this.name = name;
this.age = age;
this.maps = maps;
this.lists = lists;
this.dog = dog;
}
//getter和setter方法在此省略
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
}
}
- 实体类Dog
@Component
@ConfigurationProperties(prefix = "dog")
public class Dog {
private String name;
private String age;
public Dog() {
}
public Dog(String name, String age) {
this.name = name;
this.age = age;
}
//getter和setter方法在此省略
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
- yaml文件
person:
name: yyf
age: 22
maps: {工作: 9:00-21:00, sleep: 11:30-8:00}
lists:
- movie
- music
- 吃饭
dog:
name: happy
age: 3
- 测试结果如下,我们可以发现,Map类型中的中文无法被识别(无“工作: 9:00-21:00”键值对)
Person{name='yyf', age=22, maps={sleep=11:30-8:00}, lists=[movie, music, 吃饭], dog=Dog{name='happy', age='3'}}
当yaml文件的maps中key均为中文时,会报类型转换错误
No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.Object>]
猜测是String类型解析的问题,但是将map中的value类型改成String,值改成中文却能正确注入不会报错。