在springboot的開發中,有時候咱們會有不一樣的配置,例如日誌打印,數據庫鏈接等,開發,測試,生產每一個環境可能配置都不一致,還好,springboot支持經過不一樣的profile來配置不一樣環境的配置,下面就大體介紹一下yml配置文件跟properties配置文件怎麼使用profile配置不一樣環境的配置文件...java
先介紹一下開發環境:spring
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來配置屬性,咱們則能夠這麼使用,經過與配置文件相同的明明規範,建立application-{profile}.yml文件,將於環境無關的屬性,放置到application.yml文件裏面,能夠經過這種形式來配置多個環境的屬性文件,在application.yml文件裏面指定spring.profiles.active=profiles的值,來加載不一樣環境的配置,若是不指定,則默認只使用application.yml屬性文件,不會加載其餘的profiles的配置
若是使用application.properties進行多個環境的配置,原理跟使用多個yml配置文件一致,也是經過application-{profile}.properties來控制加載哪一個環境的配置,將於環境無關的屬性,放置到application.properties文件裏面,經過spring.profiles.active=profiles的值,加載不一樣環境的配置,若是不指定,則默認加載application.properties的配置,不會加載帶有profile的配置
到這,文章就結束了!
以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正
歡迎轉載,請註明出處跟做者,謝謝!