大家好,我是課代表。公眾號搜尋:Java課代表,及時獲取更多java實戰乾貨。
授人以魚不如授人以漁,今天跟大家分享一下SpringBoot基於profile的一些配置。
0 痛點
開發過程中,我們一般會有若干個不同的環境,如:開發環境,生產環境。一般情況下,不同環境下的程式配置是不同的。如果每次切換環境都去修改配置檔案,一是比較麻煩,二是容易出錯。
例如:開發階段,我們可以採用嵌入式的H2資料庫,但生產環境中使用mysql。
1 YAML檔案
SpringBoot採用YAML(/ˈjæməl/)檔案來管理配置,其優點是簡潔明瞭,可讀性好。
實現多配置有兩種方式:
單個yml配置檔案中編寫不同配置
編寫多個yml檔案,代表不同的配置
單個yml檔案
在一個yml檔案中,透過
——-
分隔多個不同配置,根據
spring。profiles。active
的值來決定啟用哪個配置,例如:
#公共配置spring: profiles: active: pro #使用名為pro的配置,這裡可以切換成dev datasource: url: jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true password: 123456 username: root——-#開發環境配置spring: profiles: dev #profiles屬性代表配置的名稱server: port: 8080——-#生產環境配置spring: profiles: proserver: port: 80
多個yml檔案
將配置編寫在多個yml檔案中,根據
spring。profiles。active
的值來決定啟用哪個配置。
配置檔案規則如下:
檔案命名需要符合application-{profile}。yml的格式,如:application-dev。yml
相同配置寫到application。yml中,不同的環境配置寫到不同的yml檔案中
例如:
application。yml
#公共配置spring: profiles: active: pro #使用名為pro的配置,這裡可以切換成dev datasource: url: jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true password: 123456 username: root
application-dev。yml
server: port: 8080
application-pro。yml
server: port: 80
2 選擇配置
有了YAML檔案的配置,不同環境的不同配置終於不用改來改去了,但提交程式碼時還是要注意指定
spring。profiles。active
的值,否則還有提錯配置的風險,有沒有一勞永逸的辦法呢?
我們在啟動應用時透過環境變數的方式指定使用哪個配置,具體如下:
java -jar xxx。jar ——spring。profiles。active=pro
透過這樣的配置,我們就可以指定,在開發環境使用dev配置,在生產環境使用pro配置,從而一次解決提錯配置檔案的問題,而且還很優雅!
3 注意事項
兩種配置方式根據個人喜好使用,但如果配置很多,建議拆成多個yml檔案,即方式二。便於維護
注意區分二者的不同,不能混用
4 參考資料
Spring實戰(第五版)
Spring官方文件
原創碼字不容易,歡迎關注點贊和分享。