1.配置文件 school.yml
destinations:
studnets:
zhangsan:
id: 123
clazz: 3年2班
lisi:
id: 124
clazz: 3年2班
teachers:
Mr.wang:
id: 111
clazz: 3年2班
2.Bean
@Component
@ConfigurationProperties(prefis = "destinations")
@PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:school.yml")
public class School{
private Map<String, DestinationInfo> students = new HashMap<>();
private Map<String, DestinationInfo> teachers = new HashMap<>();
//Getter and Setter
//toString()
public static class DestinationInfo{
private String id;
private String clazz;
//Getter and Setter
//toString()
}
}
3.自定义yml工厂
public class YamlPropertySourceFactory implements PropertySourceFactory{
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException{
String resourceName = Optional.ofNullable(name).orElse(resource.getResource().getFilename());
if(resourceName.endsWith(".yml")||resourceName.endsWith(".yaml"){
List<PropertySource<?>> yamlSources = new YamlPropertySourceLoader().load(resourceName,resource,getResource());
return yamlSources.get(0);
}else{
return new PropertiesPropertySource(resourceName,new Properties);
}
}
}
4.测试类
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestYml{
@AutoWired
private School school;
@Test
public void test(){
System.out.println(school);
}
}