欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何讀取yaml配置文件

 更新時(shí)間:2024年01月15日 09:21:33   作者:qzqanlhy1314  
這篇文章主要介紹了java如何讀取yaml配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java讀取yaml配置文件

maven

<dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.23</version>
</dependency>
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
</dependency>

application.yaml

server:
  host: localhost
  port: 8771

java code

import org.yaml.snakeyaml.Yaml;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;


public class YamlReader {

    private static Map<String, Map<String, Object>> properties;

    private YamlReader() {
        if (SingletonHolder.instance != null) {
            throw new IllegalStateException();
        }
    }

    /**
     * use static inner class  achieve singleton
     */
    private static class SingletonHolder {
        private static YamlReader instance = new YamlReader();
    }

    public static YamlReader getInstance() {
        return SingletonHolder.instance;
    }

    //init property when class is loaded
    static {

        InputStream in = null;
        try {
            properties = new HashMap<>();
            Yaml yaml = new Yaml();
            in = YamlReader.class.getClassLoader().getResourceAsStream("application.yaml");
            properties = yaml.loadAs(in, HashMap.class);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * get yaml property
     *
     * @param key
     * @return
     */
    public Object getValueByKey(String root, String key) {

        Map<String, Object> rootProperty = properties.get(root);
        return rootProperty.getOrDefault(key, "");
    }
}

Junit Test code

public class YamlReaderTest {
    @Test
    public void testYamlReader() {
        Assert.assertEquals(YamlReader.getInstance().getValueByKey("server", "host"), "localhost");
        Assert.assertEquals(YamlReader.getInstance().getValueByKey("server", "port"), 8771);
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解java封裝返回結(jié)果與RestControllerAdvice注解

    詳解java封裝返回結(jié)果與RestControllerAdvice注解

    這篇文章主要為大家介紹了java封裝返回結(jié)果與RestControllerAdvice注解實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • java階乘計(jì)算獲得結(jié)果末尾0的個(gè)數(shù)代碼實(shí)現(xiàn)

    java階乘計(jì)算獲得結(jié)果末尾0的個(gè)數(shù)代碼實(shí)現(xiàn)

    今天偶然看到一個(gè)要求,求1000~10000之間的數(shù)n的階乘并計(jì)算所得的數(shù)n!末尾有多少個(gè)0?要求: 不計(jì)算 只要得到末尾有多少個(gè)0就可以了,看下面的代碼吧
    2013-12-12
  • SpringBoot @ConfigurationProperties使用詳解

    SpringBoot @ConfigurationProperties使用詳解

    這篇文章主要介紹了SpringBoot @ConfigurationProperties使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java awt實(shí)現(xiàn)計(jì)算器功能

    java awt實(shí)現(xiàn)計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了java awt實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 淺談cookie 和session 的區(qū)別

    淺談cookie 和session 的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談cookie 和session 的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • java 線程公平鎖與非公平鎖詳解及實(shí)例代碼

    java 線程公平鎖與非公平鎖詳解及實(shí)例代碼

    這篇文章主要介紹了java 線程公平鎖與非公平鎖詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java中大數(shù)據(jù)推薦算法使用場(chǎng)景分析

    Java中大數(shù)據(jù)推薦算法使用場(chǎng)景分析

    在Java中實(shí)現(xiàn)大數(shù)據(jù)推薦算法時(shí),通常會(huì)使用一些開(kāi)源的機(jī)器學(xué)習(xí)庫(kù),如Apache Mahout、Weka、DL4J(DeepLearning4j,用于深度學(xué)習(xí))或者Spark MLlib(用于在Spark集群上運(yùn)行),這篇文章主要介紹了Java中可以用的大數(shù)據(jù)推薦算法,需要的朋友可以參考下
    2024-06-06
  • MyBatis的@SelectProvider注解構(gòu)建動(dòng)態(tài)SQL方式

    MyBatis的@SelectProvider注解構(gòu)建動(dòng)態(tài)SQL方式

    這篇文章主要介紹了MyBatis的@SelectProvider注解構(gòu)建動(dòng)態(tài)SQL方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用Gradle打依賴(lài)包失敗的問(wèn)題及解決

    使用Gradle打依賴(lài)包失敗的問(wèn)題及解決

    這篇文章主要介紹了使用Gradle打依賴(lài)包失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 關(guān)于Java的Character類(lèi)詳解

    關(guān)于Java的Character類(lèi)詳解

    這篇文章主要介紹了關(guān)于Java的Character類(lèi)詳解,Java中的Character類(lèi)是一個(gè)包裝類(lèi),用于封裝一個(gè)基本數(shù)據(jù)類(lèi)型char的值,它提供了一些靜態(tài)方法來(lái)操作字符,需要的朋友可以參考下
    2023-05-05

最新評(píng)論