項目在運行時,是存在很多環境的,比如說開發時有開發環境,在測試,在實施部署項目的時候,環境也是不同。
環境的不同所需要配置的信息也是不同,那麼我們就需要引用不同的配置文件,我們需要做的就是自由的切換所需要引用的配置文件。
大家知道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,本章就到這裏了。
關注博主,更多精彩哦!