開發環境的配置提生產了!這坑怎麼填?

大家好,我是課代表。公眾號搜尋: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官方文件

原創碼字不容易,歡迎關注點贊和分享。