從零開始的Spring Boot學習【九】【多環境設置以及切換】

項目在運行時,是存在很多環境的,比如說開發時有開發環境,在測試,在實施部署項目的時候,環境也是不同。

環境的不同所需要配置的信息也是不同,那麼我們就需要引用不同的配置文件,我們需要做的就是自由的切換所需要引用的配置文件。

大家知道Spring Boot默認引用的是application.properties所設置的環境,現在假設有兩個環境,一個開發環境,一個測試環境,那麼我們的配置文件需要怎麼命名?Spring Boot提供了相應的書寫方法便於我們去命名,也就是說是提前約定好的,Spring Boot會去識別的一個配置文件的書寫方法

靜態切換環境:

1).properties:

格式如下:

application-環境名.properties

我們現在添加兩個環境,一個開發一個測試,我們就可以命名爲:

application-dev.properties
application-test.properties

application-環境.properties中的環境是可以自己取的,並不要求寫死,只是在application後面加上了一個"-"+環境名,代表不同環境下的配置。

(圖標不用管它)

創建好後,我們做一個簡單的小例子,我們首先在application.properties中設置端口號爲8081。在dev的配置文件中設置端口號爲8082,test中設置爲8083。我們運行主程序,毫無疑問,它會選擇使用默認的application.properties的配置的環境信息。

那麼我們要如何切換不同的環境呢?填寫如下信息。

spring.profiles.active=環境名

在哪裏書寫呢?是在application.properties中。我們現在來嘗試一下。(prefix+屬性名=value,我們之前專門講過如何去查找,大家感興趣,可以自行找找這個是在哪一個jar中設置的^v^)

然後運行主程序。

改成了相應的端口號,說明這是約定好的,我們只需要寫上不同的環境名就可以使用不同的配置環境了,在application.properties中我們可以指定選擇某一個具體的環境。

2).yml:

我們現在把相關的application-*.properties代碼全部註釋掉,然後來使用.yml來試試不同環境的切換是如何實現的,在application.yml中,我們可以在同一個文件中寫上不同環境的配置

我們通過“---”的方式,分隔開不同的環境,先來啓動一下主程序。

使用的是我們設置的8084端口,即主配置的信息,那麼我們怎麼進行切換呢。

和在application.properties中是一樣的,不過書寫的格式不一樣,大家還記得把,不記得可以回過頭學習一下,鞏固鞏固。我們運行主程序。

端口號是8086沒有問題,這裏有一個有意思的事情,如果你沒有把application-test.properties中的端口信息註釋掉,那麼它是會默認使用的是application-test.properties中配置的環境信息,而不是寫在.yml文件中的信息,因爲.properties的優先級比.yml的高。

但是不管是.properties還是.yml都是寫死的,不夠靈活,我們來看一下如何動態的切換環境。

動態切換環境:

i)通過運行參數:

我們可以通過設置IDEA中的Program arguments來設置,右鍵Run As,選擇Run Configurations...

在Arguments中有一個Program arguments,我們設置它的運行環境爲dev,但是書寫格式和靜態的有些不同,我們需要在命令前面加上"--"兩個橫槓,然後點擊運行,我們就會看到我們的端口號變成了8085。

ii)cmd命令:

一個項目通常都是分成了很多部分模塊分給程序員去編寫,每個模塊自己創建一個新的項目,到最後彙總的時候,項目就會打成相應的jar包或者war包,拼合成一個完整的項目。所以很多時候,我們並不能在開發環境中去運行相應的指令,所以在外部環境動態的指定相應的環境,就顯得尤爲的重要。

我們先把項目打包,右鍵項目,選擇Run As,選擇Maven Build...,然後輸入package,打包的命令。

如上圖所示,在Goals中輸入,然後點擊Run即可。

如果大家出現Build Failure,不要驚慌,基本都是這個問題了

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

如果在控制檯提示有相關信息,其實解決方法並不難,鏈接(如果不是的童鞋,可以將相關錯誤複製到百度查看原因):

關於Maven項目build時出現No compiler is provided in this environment的處理

好的,解決完問題之後(如果曾經打包失敗過的童鞋,需要在填寫package命令的地方,先輸入clean,點擊Run,清除掉上一次沒有進行完的打包命令所產生的一些文件),然後我們再次進行打包命令,就會看到控制檯打印Build Success的字樣,代表我們打包成功了。

我們打包完成後,我們點開我們項目,裏面有一個target文件夾,打包好的jar就會存放在裏面,右鍵Refresh,刷新一下,就會看到如下jar文件。

我們右鍵,點擊Properties。

點擊紅框框裏的圖標,找到它的文件位置。

在文件的目錄路徑處,我們輸入cmd,回車,打開命令行。(記得要把IDEA中運行的程序給終止,不然會出現端口被佔用的情況)

我們在cmd中輸入相關命令,成功的切換了不同的配置環境。

輸入的格式如下:

java -jar 項目名.jar --spring.profiles.active=環境名

iii)通過vm參數:

這種方法和第一種通過運行參數很像,同樣是在IDEA中進行。

我們在主程序中,同樣的Run As,Run Configuration...,因爲我們剛剛使用了Maven Build,所以要選擇回我們的程序。

然後右邊的第一個輸入框就是我們的運行參數設置切換環境的方法,在下方有一個VM參數,我們同樣也可以進行設置,進行切換環境。

不同的是,方法一使用的是在命令前方加上"--",而VM參數需要在前方加上"-D"。後面的命令是一樣的,我們運行一下。

同樣也是8085,沒有問題。

OK,本章就到這裏了。

關注博主,更多精彩哦!

 

上一章:從零開始的Spring Boot學習【八】【配置類和佔位符表達式】

下一章: 從零開始的Spring Boot學習【十】【訪問路徑配置和配置文件的位置】

發佈了34 篇原創文章 · 獲贊 36 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章