Spring Boot 配置_yaml語法介紹 day02


一、Spring Boot 的全局配置文件(application.properties、application.yml)

  1.這兩種配置文件是SpringBoot 支持的對默認配置修改的格式。命名和格式是一樣的,不能隨意改名。我們來分別說一下這兩種格式的配置文件對SpringBoot配置及區別。

   這兩個配置文件的作用:SpringBoot在底層已經幫我們默認配置好,我們可以通過配置文件來修改默認的配置,如對Tomcat的端口配置等等。

   2.首先來說一下的是application.properties這個文件。(我們來修改tomcat端口)

    

    

    2.1啟動主程序,這是tomcat控制台打印的信息

    

    

    2.2修改成功

      

  3.對於application.yml這個文件而言,修改tomcat端口。(注釋掉application.properties的端口配置)

      3.1在application.properties同一個路徑下新增一個"application.yml",如下圖。

      

      添加修改tomcat代碼。

      

 

      運行效果

       

     訪問效果(還是一樣的效果)

       

 

   這兩種簡單的配置比較,application.yml比較簡潔、配置簡單。推薦使用。以下着重介紹application.yml語法。

 

二、yaml 語法(大小寫敏感)

    1.yaml語法的精髓在與對空格的使用,可謂使用得淋漓盡致。

    yaml語法主要是K:(冒號后面是空格) V值的形式(注意空格的使用)

    空格的另一個重要的使用時對配置文件的層級關系的控制,如:

      

server:
port: 8090
address: /hello -->這:后都有空格,空格也控制層級關系

 

     2.yaml對不同類型的值的操作:(只要記得 空格是神奇的存在)

      對於(數值、字符串、和布爾)對於配置的值是字符串,不用雙引號和單引號,直接寫就可以了,若使用雙引號的話會將特殊字符轉義,使用單引號則會原樣輸出,不會對

特殊字符轉義

        例如:name: "小二\n 過來"-------------------->會這樣輸出       小二   換行   過來

           name: '小二\n 過來'--------------------->會這樣輸出       小二 \n 過來(沒有變化)

 

      對於K : V形式(對象、Map)鍵值對類型

         方法一、對象和Map占一行,屬性和值會在另一行

Person:
  name: lcaiqin
  age: 23

 

        方法二、將所用配置寫在一行里面  

Person: {name: lcaiqin,age: 23}
//--->>注意空格的使用

 

     對於數組(List,Set)

          方法一、使用- value的形式。如:注意是- 空格 值

Pets:
  - dog
  - cat
  - pig

 

 

 

         

          方法二、使用一行解決。注意是:冒號  空格

Pets: [cat,dog,pig]

 

三、yaml配置文件的值注入

    在實體類中編寫如下代碼:

@Component                        //@ConfigurationProperties在Spring容器中運行需要組件的支持 @ConfigurationProperties(prefix = "person")    //告訴SpringBoot的所有屬性和配置文件映射起來。prefix = "person"指從配置文件的什么位置映射 public class Person { //基本類型 private String name; private Integer age; private Boolean Boos; //對象 private Cart cart; private Map<String,Object> map; //數組 private List<Object> list;

 

    寫法一、在application.yml中輸入如下代碼。

person: name: 獨而不孤 age: 23 Boos: true cart: name: 奧迪 color: 白色 map: k1: v1 k2: v2 list: - apple - pear
   - eat

 

    

    寫法二、在application.yml中輸入如下代碼。(一行元素搞定)

    

person:
  name: 獨而不孤
  age: 23
  cart: {name: 奧迪,color: 白色}
  list: [apple,pear,eat]
  map: {k1: v1,k2: v2}
  Boos:true

 

 

四、application.properits配置文件注入

  bean中代碼:

//基本類型
    @Value("${person.name}")    //使用el表達式,從配置文件中取出
    private String name; @Value("${person.age}") private Integer age; private Boolean Boos;

 

  application.propeerties代碼:

person.age=23
person.boos=true
person.cart.name=奧迪
person.cart.color=白色
person.name=獨而不孤
person.map.k1=值1
person.map.k2=值2
person.list.list1=apple

 

  運行效果:亂碼

    

   解決亂碼:"File">>"Settings">>"Editor">>"File Encodings"

 

 

  這樣就可以了。

 

五、@Value和@ConfigurationProperties的比較(@ConfigurationPropertis要配合@Component)

 

@ConfigurationPropertis

@Value

功能上

對所有的屬性進行注入值

一個一個注入值

語法復雜程度

簡單(可以一行一個一元素)

元素冗余

SpEL

不支持

支持

JSR303數據校驗

支持

不支持

復雜類型封裝

支持

不支持

       個人覺得(除了需要對個別的屬性賦值之外)都建議使用@ConfigurationProperties

     1.對JSR303數據校驗

  

@Component @ConfigurationProperties(prefix = "person")
@Validated    -->加入此標簽 public class Person { //基本類型
 @Email
    private String name;
    private Integer age; private Boolean Boos;

   運行效果

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM