Java 讀取 YML 配置文件

一、SpringBoot 讀取 YML 配置文件

Spring Framework 是一個輕量級的IoC和AOP容器框架,SpringBoot 擴展了 Spring 的理念,並做出良好的封裝。它是針對 Spring 應用程序開發的框架,以便快速輕鬆地創建基於 Spring 的生產級別的應用程序。因為 SpringBoot 對 Spring 進行了封裝,所以我們不需要去配置大量繁瑣的 XML 文件。

在 SpringBoot 中,我們可以通過使用 @ConfigurationProperties 來綁定一個特定的屬性類,使得它可以自動讀取 application.yml 文件中的配置,使用方法如下:

# application.yml
server:
    port: 8080
    context-path: /
    servlet:
        context-path: /
custom:
    field1: value1
    field2: value2
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("custom")
public class CustomProperties {

    private String field1;
    private String field2;

    // getter and setter methods

}

在上述示例中,我們定義了一個名為 CustomProperties 的屬性類,並使用 @ConfigurationProperties(“custom”) 註解綁定了一個前綴為 custom 的屬性配置。這樣,我們直接在該類中定義需要使用的屬性字段,並通過 setter 方法自動完成綁定。

二、Jar 包讀取外部 YML 配置文件

有時候,在部署 jar 包的過程中,我們可能需要讀取 jar 包外部的 YML 配置文件。在 Java 中,可以使用 Properties 進行配置文件的讀取,但是 Properties 並不支持 YML 文件格式,所以我們需要引入相應的依賴。



    org.yaml
    snakeyaml
    1.27

在引入依賴之後,我們就可以通過如下代碼來讀取外部 YML 配置文件:

public class ExternalConfigReader {

    public static void main(String[] args) {

        InputStream inputStream = null;
        try {
            String filePath = "file:/opt/config/config.yml";
            URL url = new URL(filePath);
            inputStream = url.openStream();

            // 解析YML文件
            Yaml yaml = new Yaml();
            Map map = (Map) yaml.load(inputStream);

            // 輸出數據
            System.out.println(map.get("field1"));
            System.out.println(map.get("field2"));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

在上述示例中,我們讀取了/opt/config/config.yml 文件,並使用 SnakeYaml 完成了對 YML 文件的讀取。接下來,我們可以通過 Map 對象獲取相應的屬性值。

三、如何讀取 YML 配置文件

除了 SpringBoot 和 Jar 包外部配置,我們還可以使用其他的方式來讀取 YML 配置文件。在 Java 中,通常會使用如下的兩種方式:

1. Properties 實現

Properties 是 Java I/O 中與關聯文件進行交互的類,主要用於讀取和寫入屬性文件。使用 Properties 讀取 YML 文件需要先將 YML 文件轉換成 Properties 格式,其格式與 YML 類似,只需要將 ‘:’ 替換為 ‘=’ 即可。

# config.yml
field1: value1
field2: value2
// 讀取 YML 文件
Properties properties = new Properties();
InputStream inputStream = new FileInputStream("config.yml");
properties.load(new InputStreamReader(inputStream, "UTF-8"));

// 輸出數據
System.out.println(properties.getProperty("field1"));
System.out.println(properties.getProperty("field2"));

2. SnakeYaml 實現

SnakeYaml 是一款處理 YAML 格式文件的 Java 庫,可用於生成 Java 對象、解析 YAML 文件、綁定 Properties 等操作。使用 SnakeYaml,我們可以直接讀取 YML 配置文件並返回一個 Map 對象。

// 讀取 YML 文件
Yaml yaml = new Yaml();
InputStream inputStream = new FileInputStream("config.yml");
Map map = (Map) yaml.load(inputStream);

// 輸出數據
System.out.println(map.get("field1"));
System.out.println(map.get("field2"));

四、SpringBoot 讀取外部 YML 配置文件

在 SpringBoot 中,我們可以通過在 application.yml 文件中添加外部配置文件路徑來讀取外部 YML 配置文件:

# application.yml
spring:
    profiles:
        active: prod
    config:
        location: file:/opt/config/
custom:
    field1: value1
    field2: value2

在上述示例中,我們通過在 application.yml 中配置了外部配置文件的路徑 file:/opt/config/,SpringBoot 在啟動時會讀取該路徑下的配置文件。接下來,我們可以通過將該路徑下的配置文件轉換成一個屬性類來獲取相應的屬性值。具體示例可參考第一部分中的 SpringBoot 讀取 YML 配置文件部分。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/186604.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:47
下一篇 2024-11-27 05:47

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論