最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 中 Properties 與 YAML 的深度解析與最佳實(shí)踐記錄(告別配置混亂)

 更新時間:2025年07月28日 10:21:51   作者:Mr  Aokey  
Spring配置用于管理組件和依賴,SpringBoot支持多種格式,默認(rèn)使用application.properties或yml,Props簡單但冗余,YAML結(jié)構(gòu)清晰支持復(fù)雜數(shù)據(jù),格式嚴(yán)格,建議統(tǒng)一配置類型避免沖突,本文介紹Spring Boot 中 Properties 與 YAML 的深度解析與最佳實(shí)踐,感興趣的朋友一起看看吧

一、Spring配置文件

1.1、什么是Spring配置

        Spring配置指的是在Spring框架中定義和管理應(yīng)用程序組件(如Bean)及其依賴關(guān)系的過程

作用

        配置文件主要用于解決硬編碼問題,它將可能變更的信息集中存放。程序啟動時,會從配置文件中讀取數(shù)據(jù)并加載運(yùn)行。

1.2、Spring Boot 配置信息

        SpringBoot不僅支持多種配置文件格式,還通過標(biāo)準(zhǔn)化配置規(guī)范來促進(jìn)其他框架與SpringBoot的集成,常見的配置信息包括:

  • 項(xiàng)目啟動端口
  • 數(shù)據(jù)庫連接信息(含用戶名和密碼)
  • 第三方系統(tǒng)調(diào)用密鑰
  • 用于問題排查的常規(guī)日志和異常日志
項(xiàng)目啟動端口配置

        SpringBoot 內(nèi)置Tomcat 服務(wù)器,默認(rèn)使用8080端口??紤]到該端口可能被其他應(yīng)用占用,SpringBoot 支持用戶自定義端口配置

數(shù)據(jù)庫連接配置

        為簡化數(shù)據(jù)庫訪問,各種持久層框架對JDBC進(jìn)行了深度封裝,使用戶僅需少量代碼即可完成數(shù)據(jù)庫操作。由于不同應(yīng)用需要連接不同數(shù)據(jù)庫,這些框架都支持用戶自定義數(shù)據(jù)庫連接配置

1.3、Spring Boot支持的配置文件

Spring Boot支持的配置文件有以下幾種:

        (1)Properties文件:使用 properties 作為文件后綴,采用鍵值對的方式進(jìn)行配置。示例:application.properties

        (2)YAML文件:使用.yml 或 yaml 作為文件后綴,采用縮進(jìn)和冒號來表示結(jié)構(gòu),支持列表和嵌套結(jié)構(gòu),具有更易讀的特點(diǎn)。示例:application.yml

        (3) XML文件:使用.xml作為文件后綴,采用XML標(biāo)簽的形式進(jìn)行配置。可以與Spring Framework的傳統(tǒng)配置方式兼容。示例:application.xml

        (4) JSON文件:使用 json 作為文件后綴,采用JSON格式進(jìn)行配置。示例:application.json

        Spring Boot默認(rèn)使用 src/main/resources 目錄下的 application.propertiesapplication.yml 作為配置文件。開發(fā)者可根據(jù)項(xiàng)目需求選擇其中一種格式,按照對應(yīng)語法規(guī)則進(jìn)行配置即可

         此配置文件類型為YAML文件,前篇我們講過:

         修改 application.yml 文件:

        再次運(yùn)行程序,我們可以看到Tomcat啟動端口號為:9090

1.4、配置文件沖突

         當(dāng)一個項(xiàng)目中既存在 Properties文件,又存在 YAML文件時,并且配置信息有沖突如下:

答案是

        我們再看運(yùn)行結(jié)果: Tomcat 啟動端口號為:8776,即為 properties文件中配置的端口號,但是我們在項(xiàng)目配置信息時,盡量只生成一個配置文件,避免因沖突造成的故障

二、Properties配置文件

        properties 是早期常用的配置文件格式,也是 SpringBoot 項(xiàng)目默認(rèn)的配置文件類型

2.1、Properties基本語法

        properties采用鍵值對形式配置,鍵(key)和值(value)之間通過等號 "=" 連接,使用 ‘#’ 來添加注釋,例如:

        詳細(xì)語法講解請看官方文檔Spring boot配置

2.2、讀取配置文件

        在配置文件中添加如下內(nèi)容:

@RestController
@RequestMapping("Demo")
public class PropertiesDemo {
    @Value("${phone.num}")
    private int num;
    @RequestMapping("a")
    public String a(){
        System.out.println(num);
        return "讀取到電話號碼: "+num;
    }
}

        訪問URL路徑 127.0.0.1:9090/Demo/a 后:

2.3、Properties缺點(diǎn)分析

2.3.1、擴(kuò)展性有限

        Properties文件采用簡單的鍵值對結(jié)構(gòu),僅支持單層數(shù)據(jù),無法直接表達(dá)復(fù)雜嵌套結(jié)構(gòu)(如JSON/XML支持的樹形數(shù)據(jù))。當(dāng)配置項(xiàng)存在層級關(guān)系時,需依賴命名約定(如phone.people1.num),可讀性和維護(hù)性較差

2.3.2、類型支持不足

        所有值均以字符串形式存儲,需手動轉(zhuǎn)換數(shù)據(jù)類型。例如數(shù)字、布爾值等需額外代碼處理,易引發(fā)類型轉(zhuǎn)換錯誤或遺漏

2.3.3、信息冗余

        properties 配置是以key-value的形式配置的,會有很多的冗余的信息,如下:

三、YAML配置文件

        yaml 通常簡寫為 yml,這是實(shí)際開發(fā)中最常見的寫法。yml 和 yaml 的使用方式完全一致。

3.1、yml基本語法

        YML 采用樹形結(jié)構(gòu)的配置文件格式,其基本語法規(guī)則為 "key: value" ;其中 key 和 value 之間必須使用英文冒號加空格分隔,該空格不可省略?;菊Z法示例如下:

3.2、yml配置不同數(shù)據(jù)類型

3.2.1、正常接收參數(shù)

        上述代碼中,空字符串可以空著不寫,但是為了避免造成誤會,我們可以加上引號表示空字符串,此處單引號或者雙引號都一樣 

        yml 讀取配置的方式與 properties 相同,使用 @Value 注解即可,具體實(shí)現(xiàn)代碼如下:

         訪問URL后:

3.2.2、不同類型接收參數(shù)

@RestController
@RequestMapping("Demo")
public class PropertiesDemo {
    @Value("${float.value}")
    private int value;
    @PostConstruct
    public void getList(){
        System.out.println("嘗試整形接收浮點(diǎn)型變量:"+value);
    }
}

        在使用 int 類型接收 yml 配置文件中 float.value 的值時,會出現(xiàn)類型匹配異常。因此,在接收參數(shù)時需要注意將參數(shù)轉(zhuǎn)換為兼容的數(shù)據(jù)類型

3.3、配置對象

        我們還可以在yml中配置對象,如下:

        此時無法通過@Value 注解讀取配置對象,需要使用 @ConfigurationProperties 注解來實(shí)現(xiàn),具體代碼如下:

@ConfigurationProperties(prefix = "hero")
@Component
@Data
public class Hero {
    private String name;
    private int age;
    private String hobby;
}
@RestController
@RequestMapping("Demo")
public class PropertiesDemo {
    @Autowired
    private Hero hero;
    @RequestMapping("hero")
    public String getHero(){
        return hero.toString();
    }
}

        運(yùn)行程序并訪問URL:127.0.0.1:8080/Demo/hero 后得:

        @ConfigurationProperties 注解會將配置文件中以"hero"為前綴的配置項(xiàng)自動映射到 Hero 類的對應(yīng)屬性上。隨后,Spring 會將這些值注入到 PropertiesDemo 類的 Hero 對象中,從而得到上述最終的配置結(jié)果,當(dāng)然上述配置文件中的對象也可看作為一個一個的參數(shù)按照 3.2.1 目錄的方法步驟進(jìn)行獲取

3.4、配置集合

         yml 配置文件也可以配置 list 集合,代碼如下:

list:
  name:
    - aaa
    - bbb
    - ccc
    - ddd
    - eee

        集合的讀取方式與對象相同,都是通過 @ConfigurationProperties注解來實(shí)現(xiàn)的

@RestController
@RequestMapping("Demo")
public class PropertiesDemo {
    @Autowired
    private ListConfig listConfig;
    @PostConstruct
    public void getList(){
        System.out.println(listConfig.toString());
    }
}

        觀察結(jié)果:

        此處我們可以觀察到,在輸出 list 集合后, 此程序還未啟動完成,為什么呢?

3.5、配置Map

  yml 配置文件還可以配置 Map,代碼如下:

maptypes:
  map:
    k1: v1
    k2: v2
    k3: v3

        Map的讀取方式與上述對象和集合也相同,也是通過 @ConfigurationProperties 注解來實(shí)現(xiàn)的

@Data
@ConfigurationProperties("maptypes")
@Component
public class MapConfig {
    private HashMap<String,String> map;
}
------------------------------------------
@RestController
@RequestMapping("Demo")
public class PropertiesDemo {
    @Autowired
    private MapConfig mapConfig;
    @PostConstruct
    public void getList(){
        System.out.println(mapConfig.toString());
    }
}

         觀察結(jié)果:

3.6、yml的優(yōu)缺點(diǎn)

3.6.1、優(yōu)點(diǎn)

        (1)語法簡潔明了,可讀性強(qiáng),寫法簡單,易于理解

        (2)數(shù)據(jù)類型支持豐富,能直觀地表達(dá)對象、數(shù)組、集合等多種數(shù)據(jù)結(jié)構(gòu)

        (3)跨語言兼容性好,不僅適用于Java,還支持Golang、Python、Ruby、JavaScript等多種編程語言

3.6.2、缺點(diǎn)

        (1)不適合編寫復(fù)雜配置文件

        (2)格式要求嚴(yán)格,細(xì)小的空格或縮進(jìn)錯誤都可能導(dǎo)致解析失敗

四、本章總結(jié)

        properties 文件采用 key=value 的鍵值對格式配置,而 yml 文件則采用樹形結(jié)構(gòu)配置方式

        讀取配置文件時,可使用 @Value 注解,注解內(nèi)需以 "${}" 的格式指定配置項(xiàng)

        yml 文件通過換行縮進(jìn)來表示層級關(guān)系,key 和 value 之間需用英文冒號加空格分隔,且空格不可省略

        properties 是早期默認(rèn)的配置文件格式,存在一定數(shù)據(jù)冗余問題,yml 能有效解決冗余問題,但不太適合復(fù)雜配置場景

        yml 和 properties 可以共存于同一項(xiàng)目,但建議統(tǒng)一使用其中一種配置文件類型

到此這篇關(guān)于Spring Boot 中 Properties 與 YAML 的深度解析與最佳實(shí)踐記錄(告別配置混亂)的文章就介紹到這了,更多相關(guān)Spring Boot Properties 與 YAML內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中hutool?List集合對象拷貝案例代碼

    Java中hutool?List集合對象拷貝案例代碼

    這篇文章主要給大家介紹了關(guān)于Java中hutool?List集合對象拷貝的相關(guān)資料,介紹了如何將兩個不同對象(Point和CustomData)的特定字段拷貝到一個中間對象(IotDataCache)中,并討論了一些在實(shí)現(xiàn)過程中遇到的問題和解決方法,需要的朋友可以參考下
    2024-11-11
  • 利用maven deploy上傳本地jar至私服的方法

    利用maven deploy上傳本地jar至私服的方法

    這篇文章主要介紹了利用maven deploy上傳本地jar至私服的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • SpringBoot啟動異常Exception in thread “main“ java.lang.UnsupportedClassVersionError

    SpringBoot啟動異常Exception in thread “main“ 

    本文主要介紹了SpringBoot啟動異常Exception in thread “main“ java.lang.UnsupportedClassVersionError,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • RocketMQ發(fā)送事務(wù)消息詳解

    RocketMQ發(fā)送事務(wù)消息詳解

    這篇文章主要介紹了RocketMQ發(fā)送事務(wù)消息詳解,RocketMQ分布式事務(wù)消息不僅可以實(shí)現(xiàn)應(yīng)用之間的解耦,又能保證數(shù)據(jù)的最終一致性,傳統(tǒng)的大事務(wù)可以被拆分為小事務(wù),不僅能提升效率,還不會因?yàn)槟骋粋€關(guān)聯(lián)應(yīng)用的不可用導(dǎo)致整體回滾,需要的朋友可以參考下
    2023-09-09
  • 教你用Springboot實(shí)現(xiàn)攔截器獲取header內(nèi)容

    教你用Springboot實(shí)現(xiàn)攔截器獲取header內(nèi)容

    項(xiàng)目中遇到一個需求,對接上游系統(tǒng)是涉及到需要增加請求頭,請求頭的信息是動態(tài)獲取的,需要動態(tài)從下游拿到之后轉(zhuǎn)給上游,文中非常詳細(xì)的介紹了該需求的實(shí)現(xiàn),需要的朋友可以參考下
    2021-05-05
  • 使用Spring Data JPA的坑點(diǎn)記錄總結(jié)

    使用Spring Data JPA的坑點(diǎn)記錄總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于使用Spring Data JPA的一些坑點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Idea創(chuàng)建springboot不能選擇java8的解決

    Idea創(chuàng)建springboot不能選擇java8的解決

    在IDEA 2023版本創(chuàng)建Spring Boot項(xiàng)目時,發(fā)現(xiàn)沒有Java 8選項(xiàng),只有Java 17和Java 20,解決方法包括:通過修改服務(wù)器URL(推薦)或直接在創(chuàng)建后修改pom.xml文件中的Spring Boot和Java版本
    2025-01-01
  • 關(guān)于訪問后端接口報404錯誤問題的解決方法(全網(wǎng)最細(xì)!)

    關(guān)于訪問后端接口報404錯誤問題的解決方法(全網(wǎng)最細(xì)!)

    404頁面的出現(xiàn)會降低用戶體驗(yàn),那么導(dǎo)致404頁面出現(xiàn)的原因是什么呢?這篇文章主要給大家介紹了關(guān)于訪問后端接口報404錯誤問題的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 解決BigDecimal轉(zhuǎn)long丟失精度的問題

    解決BigDecimal轉(zhuǎn)long丟失精度的問題

    這篇文章主要介紹了解決BigDecimal轉(zhuǎn)long丟失精度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • spring-boot讀取props和yml配置文件的方法

    spring-boot讀取props和yml配置文件的方法

    本篇文章主要介紹了spring-boot讀取props和yml配置文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

贵港市| 凌海市| 铜鼓县| 西安市| 灵寿县| 南投县| 巴林左旗| 新余市| 陈巴尔虎旗| 和田市| 蒲城县| 孝昌县| 哈尔滨市| 桂平市| 奉节县| 科技| 平顶山市| 南投县| 札达县| 吕梁市| 兴和县| 班玛县| 大名县| 泉州市| 万载县| 怀仁县| 安新县| 东港市| 旬阳县| 黄陵县| 安吉县| 清流县| 策勒县| 瓦房店市| 广平县| 孝昌县| 布尔津县| 吉木萨尔县| 泰州市| 屯门区| 临江市|