Spring-Boot使用profile來配置不一樣環境的配置文件

在springboot的開發中,有時候咱們會有不一樣的配置,例如日誌打印,數據庫鏈接等,開發,測試,生產每一個環境可能配置都不一致,還好,springboot支持經過不一樣的profile來配置不一樣環境的配置,下面就大體介紹一下yml配置文件跟properties配置文件怎麼使用profile配置不一樣環境的配置文件...java

先介紹一下開發環境:spring

  1. jdk版本是1.8
  2. springboot的版本是1.4.1
  3. 開發工具爲 intellij idea

 

咱們先來介紹,使用一個yml文件,經過不一樣的profile來配置屬性文件:

    1.首先,咱們先建立一個名爲 application.yml的屬性文件,以下:數據庫

    

    2.而後打開文件,輸入一下內容:springboot

#查看springboot開啓了哪些配置
debug: false


spring:
  profiles:
    active: dev

---
#開發環境配置
spring:
  profiles: dev


server:
  port: 8080


---
#測試環境配置
spring:
  profiles: test

server:
  port: 8081


---
#生產環境配置

spring:
  profiles: pro

server:
  port: 8082

很是簡單的配置,application.yml文件分爲四部分,使用一組(---)來做爲分隔符,第一部分,爲通用配置部分,表示三個環境都通用的屬性,spring.profiles.active稍後解釋.服務器

後面三段分別爲,開發,測試,生產,都用spring.profiles指定了一個值(開發爲dev,測試爲test,生產爲pro),這個值表示該段配置應該用在哪一個profile裏面,app

    PS:必定要注意!!必定要注意!!必定要注意!!全部屬性後面跟的value要跟 ":" 隔開一個空格,不然,配置無效!!!配置無效!!!配置無效!!!我當初就掉進來了,在此告知各位,別跟我同樣掉進來!!!ide

若是,咱們是本地啓動,在通用配置裏面,能夠設置調用哪一個環境的profile,也就是第一段的spring.profiles.active=XXX;工具

上面的XXX是每一個環境的 spring.profiles對應的value,經過這個,能夠控制本地啓動調用哪一個環境的配置文件,例如:開發工具

spring:測試

    profiles:

        active: dev

加載的,就是開發環境的屬性,若是dev換成test,則會加載測試環境的屬性,生產也是如此,

PS:若是spring.profiles.active沒有指定值,那麼只會使用沒有指定spring.profiles文件的值,也就是隻會加載通用的配置

若是是部署到服務器的話,咱們正常打成jar包,發佈是時候,採用:

--spring.profiles.active=test或者pro 來控制加載哪一個環境的配置,完整命令以下:

java -jar xxxxx.jar --spring.profiles.active=test  表示加載測試環境的配置

java -jar xxxxx.jar --spring.profiles.active=pro  表示加載生產環境的配置

上面介紹完了,咱們本地啓動一下,先將spring.profiles.active的值設置爲dev,看看日誌打印結果:

經過日誌分析,能夠看到,打印了profiles的值爲dev,下面看看打印的端口號

發現,端口號是8080說明加載了dev的配置;

下面咱們來試試把active的值換成test,重啓看看:

active變成了test,

端口變爲了8081,說明,加載的是test的配置,

 

接下來,就是使用多個yml配置文件進行配置屬性文件:

    若是是使用多個yml來配置屬性,咱們則能夠這麼使用,經過與配置文件相同的明明規範,建立application-{profile}.yml文件,將於環境無關的屬性,放置到application.yml文件裏面,能夠經過這種形式來配置多個環境的屬性文件,在application.yml文件裏面指定spring.profiles.active=profiles的值,來加載不一樣環境的配置,若是不指定,則默認只使用application.yml屬性文件,不會加載其餘的profiles的配置

使用properties配置多個環境配置文件

若是使用application.properties進行多個環境的配置,原理跟使用多個yml配置文件一致,也是經過application-{profile}.properties來控制加載哪一個環境的配置,將於環境無關的屬性,放置到application.properties文件裏面,經過spring.profiles.active=profiles的值,加載不一樣環境的配置,若是不指定,則默認加載application.properties的配置,不會加載帶有profile的配置

到這,文章就結束了!

以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索