天天看點

Spring Boot配置檔案和yaml文法

✨Spring Boot配置

  • ​​🏖️1.全局配置檔案​​
  • ​​🌈1.1全局配置檔案概述​​
  • ​​🌈1.2配置檔案的位置和加載順序​​
  • ​​🏖️2.多環境配置​​
  • ​​🌈 2.1多環境配置檔案​​
  • ​​🌈2.2激活某個環境配置​​
  • ​​🏖️3.yaml​​
  • ​​🌈3.1yaml概述​​
  • ​​🌈3.2基本文法​​
  • ​​🌈3.3值的寫法​​
  • ​​❄️3.3.1字面量​​
  • ​​❄️3.3.2 日期類型​​
  • ​​❄️3.3.3對象​​
  • ​​❄️3.3.4 數組、List、Set​​
  • ​​🏖️4.利用配置檔案來給屬性指派​​
  • ​​🌈4.1@Value,通過${}直接獲得配置檔案的配置值注入​​
  • ​​🌈4.2@ConfigurationProperties​​
  • ​​🌈4.3@EnableConfigurationProperties​​
  • ​​🌈4.4@PropertySource​​
  • ​​🏖️5.自定義配置類​​
  • ​​🌈5.1@Configuration​​
  • ​​🌈5.2@Bean​​
  • ​​🌈5.3代碼示範​​
  • ​​🌈5.4檢視啟動類的注解​​

📃個人首頁:

​不斷前進的皮卡丘​

🌞部落格描述:

夢想也許遙不可及,但重要的是追夢的過程,用部落格記錄自己的成長,記錄自己一步一步向上攀登的印記

🏖️1.全局配置檔案

🌈1.1全局配置檔案概述

Spring Boot使用一個全局的配置檔案,通過配置檔案,可以修改Spring Boot自動配置的預設值,配置檔案名是固定的,檔案名必須是​

​application​

​​ 配置檔案格式​

​properties​

​或者​

​yml​

​,比如​

​application.properties​

​或者​

​application.yml​

比如,我們可以通過修改application.properties來自定義伺服器的端口号
Spring Boot配置檔案和yaml文法
我們來建立一個項目
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法

🌈1.2配置檔案的位置和加載順序

  • /config/:目前項目根目錄下的config目錄下
  • /:目前項目的根目錄下
  • /resources/config/:resources目錄下的config目錄下
  • /resources/:resources目錄下

加載的優先級是從上到下,由高到低

Spring Boot配置檔案和yaml文法

🏖️2.多環境配置

開發過程中,至少需要三個環境(開發環境dev-測試環境test-生産環境pro),但是每一個環境的配置都不一樣,比如資料庫等各種配置,Spring Boot提供多環境配置的機制,讓開發者靈活根據需求而切換不同的配置環境

比如:我們可以通過在不同環境下面,伺服器端口号不同進行測試

🌈 2.1多環境配置檔案

在Spring Boot中多環境配置檔案名必須滿足:​

​application-{profile}.properties​

​​的固定格式。

其中,{profile}對應的是我們的環境辨別,比如:

application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生産環境      

🌈2.2激活某個環境配置

在application.properties檔案中添加配置,​

​spring.profiles.active={profile}​

​​ 來激活

比如:

spring-profiles.active=test  表示開啟測試環境      
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法

🏖️3.yaml

🌈3.1yaml概述

yaml(YAML A/isn’t Markup Language),字尾名是​

​.yaml​

​​或者​

​.yml​

​。有兩層含義

  • YAML是一個标記語言
  • YAML不是一個标記語言

yaml是以​

​資料為中心​

​​,比如json\xml等更适合作為配置檔案

使用​​

​#​

​添加注釋

# 伺服器端口
server:
  port: 8080      
當我們建立一個Spring Boot項目的時候,它預設是給的配置檔案是​

​.properties​

​​的形式,我們也可以把它修改成​

​yaml​

​的形式
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法

🌈3.2基本文法

  • k:(空格)v,表示一對鍵值對,​

    ​空格一定要有​

  • 用縮進來控制層級關系,隻要是左對齊的一列資料,都是同一個層級的
  • 屬性和值是區分大小寫的
  • 縮進的空格數不重要,但同級元素必須左側對齊。

例如:

spring:
  profiles: dev
  
  datasource:
    url: jdbc:mysql://127.0.01/banchengbang_springboot
    username: root
    password: root
    driver-class-name:      

🌈3.3值的寫法

YAML 支援以下三種資料結構:

  • 對象:鍵值對的集合
  • 數組:一組按次序排列的值
  • 字面量:單個的、不可拆分的值

❄️3.3.1字面量

  • 字面量:普通的值(數字,字元串,布爾)
  • 字元串預設不需要加上單引号或者雙引号
  • 字元串如果加上雙引号,那麼轉義字元有效
  • 字元串如果加上單引号,那麼轉義字元隻是一個普通的字元串資料
  • ​字面量是指單個的,不可拆分的值,例如:數字、字元串、布爾值、以及日期等​

name: "zhangsan \n lisi"
# 輸出的結果是      
name: 'zhangsan \n lisi'
# 輸出的結果是      

❄️3.3.2 日期類型

  • 日期類型
  • 日期格式必須是 :“yyyy/MM/dd”
birth:      
  • 對象(屬性和值)、Map(鍵值對)

❄️3.3.3對象

對象寫法方式一:換行縮進

person: 
  lastName: zhangsan
  age: 20
  book:
    price: 222      

對象寫法方式二:行内寫法

book: {name: java,price: 2000}      

❄️3.3.4 數組、List、Set

縮進的寫法:用-表示數組中的一個元素

pets:
  - cat
  - dog
  -      

行内寫法,外部使用[]表示

pets: [cat,dog,pig]      

🏖️4.利用配置檔案來給屬性指派

🌈4.1@Value,通過${}直接獲得配置檔案的配置值注入

Spring Boot配置檔案和yaml文法
測試
Spring Boot配置檔案和yaml文法

🌈4.2@ConfigurationProperties

可以讓屬性和配置檔案中的配置自動綁定,需要指明一個prefix(字首)

先把檔案編碼方式改成UTF-8
Spring Boot配置檔案和yaml文法
還是以剛剛的Book類為例子,我們可以先在pom.xml檔案中添加依賴
Spring Boot配置檔案和yaml文法
加入這個依賴的作用其實是為了便于我們寫代碼,我們在配置檔案中可以看到提示
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法
測試一下
Spring Boot配置檔案和yaml文法

🌈4.3@EnableConfigurationProperties

  • 方法一:通過@Component注解可以把指定類注入到Spring容器中
  • 方法二:在Spring Boot啟動類上,添加@EnableConfigurationProperties,把指定的類注入到Spring容器中,推薦這個方法,便于統一管理
  • Spring Boot配置檔案和yaml文法
  • 我們點進這個注解去看看(大家對源碼感興趣的可以自己去深入了解)
  • Spring Boot配置檔案和yaml文法

🌈4.4@PropertySource

可以指定加載一個獨立的配置檔案資訊

用法:

  • 加載指定的屬性檔案(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。
  • @PropertySource 和 @Value

    組合使用,可以将自定義屬性檔案中的屬性變量值注入到目前類的使用@Value注解的成員變量中。

  • @PropertySource 和 @ConfigurationProperties

    組合使用,可以将屬性檔案與一個Java類綁定,将屬性檔案中的變量值注入到該Java類的成員變量中。

比如說,我們本來是在全局配置檔案中指定那些屬性的資訊,但是可能有很多需要配置,這個時候,我們可以把這些抽取出來,成為一個個小的配置檔案,但是要注意的是,這個時候,這些配置檔案隻能是properties形式的,不能是yaml形式的
Spring Boot配置檔案和yaml文法
Spring Boot配置檔案和yaml文法
有一個地方需要注意,這裡的話,我們得使用@Component注解,如果使用@EnableConfigurationProperties進行注入的話,其實我們在測試的時候,會發現屬性是null

🏖️5.自定義配置類

從Spring3.0,@Configuration用于定義配置類,可以替換xml配置檔案,被注解的類内部包含有一個或多個被@Bean注解的方法,這些方法的傳回值會被建立執行個體,托管給Spring容器

🌈5.1@Configuration

@Configuration标注在類上面,相當于把這個類作為Spring的xml配置檔案中的​

​<bean> ​

​​,作用是配置spring容器(應用上下文)

@Configuration注解的配置類有下面的幾個要求:

1️⃣不可以是final類型

2️⃣不可以是匿名類

3️⃣嵌套的configuration必須是靜态類

🌈5.2@Bean

@Bean标注在方法上(傳回某個執行個體的方法),等價于spring的xml配置檔案中的<bean>,作用是注冊bean對象

🌈5.3代碼示範

我們先寫一個實體類Stu
Spring Boot配置檔案和yaml文法
然後寫一個自定義的配置類
Spring Boot配置檔案和yaml文法
測試
Spring Boot配置檔案和yaml文法

🌈5.4檢視啟動類的注解

Spring Boot配置檔案和yaml文法
點進去@SpringBootApplication注解
Spring Boot配置檔案和yaml文法