1. 程式人生 > >配置文件詳細講解

配置文件詳細講解

bject alt img ati font vat zhang one 特殊

一、配置文件

SpringBoot使用一個全局的配置文件,配置文件名是固定的

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自動配置的默認值;SpringBoot在底層都給我們自動配置好;

YAML(YAML Ain’t Markup Language)

YAML是“YAML不是一種標記語言”的外語縮寫 [1] (見前方參考資料原文內容);但為了強調這種語言以數據做為中心,而不是以置標語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的數據序列化格式,是一個可讀性高並且容易被人類閱讀,容易和腳本語言交互,用來表達資料序列的編程語言。

標記語言

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以數據為中心,比json、xml等更適合做配置文件;

YAML:配置例子

        

server:
    port: 8080

如果是xml:

<server>
    <port>8080</port>
</server>

二、YAML語法介紹

1、基本語法

k:(空格)v:表示一對鍵值對(空格必須有)

以空格的縮進來控制層級關系;只要是左對齊的一列數據,都是同一個層級的

1 server:
2     port: 8080
3     path: /hello

屬性和值也是大小寫敏感;

2、值的寫法

  字面量:普通的值(數字,字符串,布爾)

  k: v:字面直接來寫;
  字符串默認不用加上單引號或者雙引號

  1)“”:雙引號:不會轉義字符串裏面的特殊字符;特殊字符會作為本身想表示的意思

  • name: "sihai\n lisi"

    輸出: sihai換行 lisi”:單引號:會轉義特殊字符,特殊字符最終只是一個普通的字符串數據

  2)”:單引號:會轉義特殊字符,特殊字符最終只是一個普通的字符串數據

  •   
    name: ‘sihai\n lisi‘
    輸出;sihai\n lisi

  對象、Map屬性和值)(鍵值對)

  k: v:在下一行來寫對象的屬性和值的關系;註意縮進 ,對象還是k: v的方式

  • user:
        name: sihai
        age: 20

    行內寫法:

  • user: {name: sihai, age: 18}

  數組(List、Set)

    用- 值表示數組中的一個元素

  • pets:
     - cat
     - dog
     - pig

    行內寫法:

  • pets: [cat,dog,pig]


三、配置文件值註入

配置文件

  • user:
        name: sihai
        age: 20
        lists:
            - lisi
            - zhangsan
        pig:
            name: 小豬
            age: 10

在javabean中的使用:

  • /**
    * 將配置文件中配置的每一個屬性的值,映射到這個組件中
    * 
    * @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;
    * 
    * prefix = "person":配置文件中哪個下面的所有屬性進行一一映射
    *
    * 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;
    *
    */
    @Component
    @ConfigurationProperties(prefix = "user")
    public class User{
        private String name;
        private int age;
    
        private List<Object> lists;
        private Pig pig;
    }

    另外,我們可以導入配置文件處理器,以後編寫配置就有提示了。

  • <!--  導入配置文件處理器,配置文件進行綁定就會有提示 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐configuration‐processor</artifactId>
        <optional>true</optional>
    </dependency>

    1、properties配置文件在idea中默認utf-8亂碼解決技術分享圖片

技術分享圖片

2、@Value獲取值和@ConfigurationProperties獲取值比較
@ConfigurationProperties@Value
功能 批量註入配置文件中的屬性
松散綁定(松散語法) 支持
SpEL 不支持
JSR303數據校驗 支持
復雜類型封裝 支持 不支持

配置文件詳細講解