SpringBoot--配置文件

配置文件

全局配置文件 SpringBoot使用一個全局的配置文件,配置文件名固定:application.properties/application.yml

配置文件目錄:在src/main/resource目錄或者類路徑/config下
配置文件作用:修改SpringBoot自動配置的默認值,比如tomcat監聽端口,SpringBoot默認配置爲8080,可以通過application.properties設置server.port=8081,修改監聽端口。

YML基本語法

YML概念:YAML Ain’t Markup Language,YML不是一門標記語言,該語言以數據爲中心
YML和XML對比
YML:

server:
  port: 8081

XML

<server>
<port>8081</port>
</server>

YML語法基本規則
k:(空格)v 表示一對鍵值對,其中必須要有空格,yml通過空格的縮進來控制層級關係;只要左對齊的一列數據,都是同一層級的;並且屬性和值對大小寫敏感。

YML各類值的寫法

  • 字面量
    k: v 字面量直接寫,字符串默認是不需要加上單引號或者雙引號
    單引號 不會對特殊字符進行轉義,比如\n,輸出字符串,也是\n兩個字符;不加引號也是該效果
    雙引號 會對特殊字符進行轉義,比如含有\n,如果打印出來,會是換行;可以理解成字符串

  • 對象、Map(鍵值對)

    • 多行寫法
      需要注意每行開始的空格
    • 單行寫法
      使用大括號括起來,鍵值對之前使用逗號進行分隔,注意key和value之間的空格
  maps: {k1: v1, k2: 12}
person:
  age: 18
  boss: false
  birth: 2000/1/1
  • 數組(List、Set)
    • 多行寫法
      每行開始時候使用短橫線
    • 單行寫法
      使用中括號括起來,鍵值對之前使用逗號進行分隔
pets: [cat, dog, sheet]

  lists:
    - lisi
    - zhaoliu
    - wangwu

配置文件的注入

這裏只是討論使用不同註解注入的方式,具體配置文件yml和properties都可以使用

  • 方式一:@ConfigurationProperties 用來批量導入配置類;需要注意使用 @Component 註解(或者配合@Bean一起使用),讓SpringBoot進行管理;@PropertySource註解,配合使用,可以讀取指定的配置文件位置;@PropertySource(value = {“classpath:person.properties”}) 配合 @Validated 註解,支持JSR303配置校驗
person:
  age: 18
  boss: false
  birth: 2000/1/1
  maps: {k1: v1, k2: 12}
  lists:
    - lisi
    - zhaoliu
    - wangwu
  dog:
    name: haha
    age: 2
  last-name:xiaoming
/**
 * 將配置文件中配置的每一個屬性的值,映射到這個組件中
 * @ConfigurationProperties 告訴Springboot將本類中所有的屬性和配置文件中的相關配置進行綁定
 * prefix = "person" 配置文件中那個下面的屬性進行一一對應
 *
 * 只有這個組件是容器中的組件,才能使用容器提供的ConfigurationProperties功能
 *
 * @date 2019/10/23
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
  • 方式二:@Value
    value=“字面量/${key}從環境變量、配置文件中獲取的值/#{SpEL}表達式”
@Value("${person.lastName}")
private String lastName;
@Value("#{11*2}")
private Integer age;
@Value("true")
private Boolean boss;

Profile多環境支持

場景:測試環境和生產環境需要不同的配置參數,如何在同一套代碼中實現

  • 方式一:使用多個properties文件
    在主配置文件編寫的時候,文件名可以是 application-{profile}.properties(例如:application-dev.properties)
    默認使用application.properties文件

  • 方式二:在同一個yml文件中使用多文檔的方式
    yml使用“- - -”(三個短橫)來在一個yml文件中分隔多個文檔

server:
  port: 8081

spring:
  profiles:
    active: prod


---
server:
  port: 8085

spring:
  profiles: dev

---
server:
  port: 8086

spring:
  profiles: prod

激活指定的profile文件

  1. 在配置文件中指定
    在properties中,在application.properties中使用 spring.profiles.active=dev 指定
    在yml文件中,在各個文檔塊裏面配置spring.profiles對應的內容,並且spring.profiles.active 指定

  2. 命令行方式
    在啓動jar包的時候,傳入命令行參數
    java -jar *****.jar --spring.profiles.active=dev

  3. 虛擬機參數
    -Dspring.profiles.active=dev

配置文件的加載位置

spring boot啓動會掃描以下位置的application.properties或者application.yml文件作爲SpringBoot的默認配置文件

  • file:./config/
  • file: ./
  • -classpath: /config
  • -classpath: / 如在IDEA工程中的resources目錄下建立的配置文件

上面是按照優先級從高到低的順序,所有位置的文件都會被加載,高優先級配置內容會覆蓋低優先級的配置內容;並且形成內容互補

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章