首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将YAML文件数据映射到多个java模型?

如何将YAML文件数据映射到多个java模型?
EN

Stack Overflow用户
提问于 2021-08-31 23:19:32
回答 1查看 553关注 0票数 0

如何将数据从单个YAML文件映射到多个bean对象?我用的是蛇毒

代码语言:javascript
复制
**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);

现在,我可以获得以下个人数据:

代码语言:javascript
复制
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");

,但我想将这些数据加载到水果对象.

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 03:22:56

对您问题的简短回答是使用spring中的@ConfigurationProperties

使用@ConfigurationProperties的示例代码

SampleApplication.java

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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

代码语言:javascript
复制
public class Apple {

    @JsonProperty("A1")
    String A1;

    @JsonProperty("A2")
    String A2;

    // getters, setters, toString...

Mango.java

代码语言:javascript
复制
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

代码语言:javascript
复制
apple:
  A1: a1
  A2: a2
mango:
  M1: m1
  M2: m2

运行应用程序后,我得到了以下结果。

代码语言:javascript
复制
...
Fruit{apple=Apple{A1='a1', A2='a2'}, mango=Mango{M1='m1', M2='m2'}}
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69006217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档