如何将数据从单个YAML文件映射到多个bean对象?我用的是蛇毒
**variables.yml:**
Apple:
A1: a1
A2: a2
Mango:
M1: m1
M2: m2
**Java Model Classes:**
Apple apple = new Apple(a1, a2);
Mango mango = new Mango(m1, m2);
Fruit fruit = new Fruit(apple, mango);现在,我可以获得以下个人数据:
InputStream inputStream = new FileInputStream(new File("variables.yaml"));
Yaml yaml = new Yaml();
Map<String, Object> yamlMaps = yaml.load(inputStream);
Map<String, Object> appleData = (Map<String, Object>) yamlMaps.get("Header");
Map<String, Object> mangoData = (Map<String, Object>) yamlMaps.get("Content");,但我想将这些数据加载到水果对象.中
发布于 2021-09-01 03:22:56
对您问题的简短回答是使用spring中的@ConfigurationProperties。
使用@ConfigurationProperties的示例代码
SampleApplication.java
@SpringBootApplication
public class SampleApplication implements CommandLineRunner {
@Autowired
Fruit fruit;
@Override
public void run(String... args) throws Exception {
System.out.println(fruit);
}
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}Fruit.java
@Component
@ConfigurationProperties
public class Fruit {
@JsonProperty("apple")
Apple apple;
@JsonProperty("mango")
Mango mango;
public Fruit() {
}
// getters, setters
@Override
public String toString() {
return "Fruit{" +
"apple=" + apple +
", mango=" + mango +
'}';
}
}Apple.java
public class Apple {
@JsonProperty("A1")
String A1;
@JsonProperty("A2")
String A2;
// getters, setters, toString...Mango.java
public class Mango {
@JsonProperty("M1")
String M1;
@JsonProperty("M2")
String M2;
public Mango() {
}
public Mango(String m1, String m2) {
M1 = m1;
M2 = m2;
}
// constructors, getters, setters, toString...application.yml
apple:
A1: a1
A2: a2
mango:
M1: m1
M2: m2运行应用程序后,我得到了以下结果。
...
Fruit{apple=Apple{A1='a1', A2='a2'}, mango=Mango{M1='m1', M2='m2'}}
...https://stackoverflow.com/questions/69006217
复制相似问题