首先,給大家說聲抱歉,因為這個週末又是搬家,帶寶寶跟親戚家小孩去海底世界玩,把更新給耽誤了,希望大家諒解。
在微服務的開發中,會涉及到zookeeper,kafka,configserver,zuul,eureka等各種各樣的組件,每個組件都會有自己對應的配置,在這篇個文章中主要講講如何在springboot中獲取配置以及在多環境下切換配置文件。
首先只需要兩步你就可以做到,
第一步,在application.properties(yml)中配置你需要的屬性;
第二步,在需要使用到配置文件的類中定義相應的變量,並用@Value註解去獲取配置的值。
在之前涉及到修改端口的文章中,我們通過在配置文件中配置server.port來配置端口號。現在我們就寫一個簡單的例子,獲取配置的端口號:
在上面一段代碼中,我們定義了一個用@Value標註的port變量,通過瀏覽器訪問可以看到如下結果:
通過上面的小例子,給大家介紹瞭如何讀取配置文件。但是在實際開發的過程中,我們涉及到的配置文件會非常的多,而且我們還要應對開發環境,測試環境,生產環境。如果這時候我們只是在一個配置文件中修改,配錯參數是常有的事情,這時候profile就派上了用場。
我們可以理解profile是我們在Spring容器中定義的Bean的邏輯組名稱,只有某一個Profile被激活,它對應的Bean才會被加載。如果沒有設置,spring就會激活默認的,這點可以從Springboot的啟動日誌可以看出。
接著,我們用一個例子來說明Profile的使用。我們在之前配置文件中,再加上一個類似的配置,區別只是修改了程序的端口號,並給每個配置都加上spring.profiles屬性。另外,我們激活其中一個。
在按照上圖的配置之後,我們從啟動日誌中看到,程序採用了topline-2的配置,端口也變成了8089:
上面我們使用了在配置文件中配置profile的方法。除了這個方法,還有其他方法可以完成配置。
在web.xml中配置,作為DispatcherServlet的初始化參數以及作為web應用的上下文參數(Springboot中不適用)
JVM配置(這種適用於以jar包的形式運行springboot程序)
java -jar -Dspring.profiles.active=topline-2 topline-springboot-mongo-0.0.1-SNAPSHOT.jar
如果是測試,可以使用@ActiveProfiles("topline-2")。
最後,希望大家多多提意見,謝謝閱讀。