あなたは(場合には、あなたが構築しているブート・フリーソリューションを探しているなら、私の答えを無視図書館)。
PropertiesConfigurationFactory
、YamlPropertySourceLoader
とを使用すると、POJOにYaml
ファイルを読むことができます:あなたがデータソースを所有して
が
import org.junit.Test;
import org.springframework.boot.bind.PropertiesConfigurationFactory;
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.io.ByteArrayResource;
import java.util.List;
import static org.junit.Assert.assertTrue;
public class YamlTest {
private static final String YAML_STRING = "list: \n" +
" - \n" +
" name: a \n" +
" url: a.com \n" +
" - \n" +
" name: b \n" +
" url: b.com";
@Test
public void shouldLoadYamlIntoObject() throws Exception {
PropertiesConfigurationFactory<EndpointsHolder> propertiesConfigurationFactory = new PropertiesConfigurationFactory<>(EndpointsHolder.class);
MutablePropertySources propertySources = new MutablePropertySources();
YamlPropertySourceLoader yamlPropertySourceLoader = new YamlPropertySourceLoader();
propertySources.addFirst(yamlPropertySourceLoader.load("list", new ByteArrayResource(YAML_STRING.getBytes()), null));
propertiesConfigurationFactory.setPropertySources(propertySources);
EndpointsHolder actual = propertiesConfigurationFactory.getObject();
assertTrue(actual.getList().get(0).getName().equals("a"));
assertTrue(actual.getList().get(1).getUrl().equals("b.com"));
}
public static class EndpointsHolder {
List<Endpoints> list;
public List<Endpoints> getList() {
return list;
}
public void setList(List<Endpoints> list) {
this.list = list;
}
}
public static class Endpoints {
String name;
String url;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
}
だけnew ByteArrayResource(YAML_STRING.getBytes())
を交換してください。