第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從 spring-boot 應(yīng)用程序中的 application.yml 文件讀取屬性

如何從 spring-boot 應(yīng)用程序中的 application.yml 文件讀取屬性

胡說(shuō)叔叔 2023-08-16 09:51:42
我的應(yīng)用程序?qū)⑶短讓傩源鎯?chǔ)在 application.yml 文件中。我想在應(yīng)用程序啟動(dòng)時(shí)將這些屬性映射到POJO 。應(yīng)用程序.yml:    demo:     - A:       - type: A         prop1: 1         prop2: 2         proop3: 3       - type: B         prop1: 1         prop2: 2         proop3: 3     - B:       - type: A         prop1: 1         prop2: 2         proop3: 3       - type: B         prop1: 1         prop2: 2         proop3: 3為了實(shí)現(xiàn)這一點(diǎn),我使用以下注釋:@Configuration@EnableConfigurationProperties@ConfigurationProperties("demo")課堂演示:@Configuration@EnableConfigurationProperties@ConfigurationProperties("demo")public class Demo {    @JsonProperty("A")    private List<A> a = null;    @JsonProperty("B")    private List<B> b = null;    @JsonProperty("A")    public List<A> getA() {        return a;    }    @JsonProperty("A")    public void setA(List<A> a) {        this.a = a;    }    @JsonProperty("B")    public List<B> getB() {        return b;    }    @JsonProperty("B")    public void setB(List<B> b) {        this.b = b;    }    @Override    public String toString() {        return "Demo [a=" + a + ", b=" + b + "]";    }   }
查看完整描述

4 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

當(dāng)您手動(dòng)創(chuàng)建屬性 POJO 的實(shí)例時(shí),Spring 不知道它,并且屬性綁定不會(huì)發(fā)生。


 SpringApplication app = new SpringApplication(MainApplication.class);

    app.run();

    System.out.println("step 1");

    Demo config = new Demo(); // Not a Spring managed bean!

    System.out.println("name: " + config);

}

@EnableConfigurationProperties您可以創(chuàng)建一個(gè) bean,而不是使用 注釋配置Demo,如類(lèi)型安全配置屬性中所示。


@Component

@ConfigurationProperties("demo")

public class Demo {

    ...

}

然后你可以Demo從上下文中獲取 bean:


@SpringBootApplication

public class MainApplication {

    public static void main(String[] args) {

        ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);

        Demo demo = (Demo) context.getBean("demo");

        System.out.println(demo.getName());

    }

}

UPD: “a”和“b”之前不能有連字符:


demo:

  a:

    - type: A

      prop1: 1

      prop2: 2

      proop3: 3

    - type: B

      prop1: 1

      prop2: 2

      proop3: 3

  b:

    - type: B

      prop1: 1

      prop2: 2

      proop3: 3

UPD2:回答評(píng)論。Demo您可以使用以下方法從 bean構(gòu)建 JSON ObjectMapper:


@SpringBootApplication

public class MainApplication {


    @Bean

    public ObjectMapper objectMapper() {

        return new ObjectMapper();

    }


    public static void main(String[] args) throws JsonProcessingException {

        ...

        ObjectMapper objectMapper = (ObjectMapper) context.getBean("objectMapper");

        System.out.println(objectMapper.writeValueAsString(demo));

    }

}

不需要spring-boot-starter-web額外的依賴。否則,你可以添加jackson:


<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.0.1</version>

</dependency>


查看完整回答
反對(duì) 回復(fù) 2023-08-16
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

您的文件中的內(nèi)容不正確。您yml可以在此處閱讀鏈接上的Merging YAML lists參考。


我寫(xiě)了一個(gè)演示,它可以工作。


demo:

        a:

            b:

                prop1: prop1

                prop2: prop2

            blist:

                - prop1: prop1

                  prop2: prop2

        alist:

            - b:

                  prop1: prop1

                  prop2: prop2

              blist:

                  - prop1: prop1

                    prop2: prop2

            - b:

                  prop1: prop1

                  prop2: prop2

``


@ConfigurationProperties(prefix = "demo")

public class Demo {

    private A a;

    private List<A> alist;

    // omitted getter/setter

}

``


public class A {

    private B b;

    private List<B> blist;

    // omitted getter/setter

}

``


public class B {

    private String prop1;

    private String prop2;

    // omitted getter/setter

}


查看完整回答
反對(duì) 回復(fù) 2023-08-16
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您想從.yml或.properties文件讀取屬性,我建議您創(chuàng)建一個(gè)類(lèi),可以PropertiesBooter在其中保存從這些文件檢索到的所有值。要從屬性文件中檢索值,您可以編寫(xiě)


@Value("${value}")

private String 


查看完整回答
反對(duì) 回復(fù) 2023-08-16
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

從 Mikhail 的回答中,只需使用 Jackson ObjectMapper 編寫(xiě) json,即可獲得 json 格式:


public static void main(String[] args) {

        ConfigurableApplicationContext context = SpringApplication.run(YamlTestApplication.class, args);

        Demo demo = (Demo) context.getBean("demo");

        System.out.println("name: " + demo);


        ObjectMapper mapper = new ObjectMapper();

        try {

            String test = mapper.writeValueAsString(demo);

            System.out.println("json: "+test);

        } catch (JsonProcessingException e) {

            e.printStackTrace();

        }

    }

輸出:


name: Demo [a=[A [type=A, prop1=1, prop2=2, proop3=3], A [type=B, prop1=1, prop2=2, proop3=3]], b=[B [type=A, prop1=1, prop2=2, proop3=3], B [type=B, prop1=1, prop2=2, proop3=3]]]

json: {"A":[{"type":"A","prop1":1,"prop2":2,"proop3":3},{"type":"B","prop1":1,"prop2":2,"proop3":3}],"B":[{"type":"A","prop1":1,"prop2":2,"proop3":3},{"type":"B","prop1":1,"prop2":2,"proop3":3}]}



查看完整回答
反對(duì) 回復(fù) 2023-08-16
  • 4 回答
  • 0 關(guān)注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)