您好,登錄后才能下訂單哦!
這篇文章主要介紹“profiles.active多環境開發、測試、部署過程是什么”,在日常操作中,相信很多人在profiles.active多環境開發、測試、部署過程是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”profiles.active多環境開發、測試、部署過程是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在開始講profiles.active配置時,我們先來考慮幾個場景。
我們在開發過程中,經常會碰到多個環境,特別熟數據庫,經常是有開發庫,測試庫,和生產庫。一般我們都是連的開發庫進行開發,但是有時候也會需要連接測試庫,甚至是生產庫進行調試工作。我們通常的做法,可能就是直接修改配置文件的數據庫連接,需要連哪個庫就改成哪個庫的連接。可是有些時候我們改來改去經常出錯,或者不記得哪個環境的配置了,這時我們可能會想到一次把幾個環境的配置都寫進來,把不需要的注釋掉,這確實是一種可行的辦法,但還有沒有更好的辦法呢?
再說部署時候的場景。一般我們打包里面包含的都是開發庫的配置文件,經常部署的時候,需要手動修改部署包里面的配置文件,如果部署到測試環境,就修改成測試環境的數據庫,如果是生產環境,就修改成生產環境的數據庫。那么有沒有辦法讓一個部署包能同時適配各種不同的環境呢。
接下來我們要講的profiles.active就可以解決上面的需求。
profiles.active表示當前激活的環境參數,他可以是一個字符數組,但一般情況下,我們都是使用單個字符,例如dev,test,prod來標識。這里我們還是以數據庫配置為例,假設我們原來的application.yml里面配置的數據源是本地數據源,現在我們再來配置一個開發庫,以dev作為環境標識。
我們將application.yml復制一份,命名為application-dev.yml,application-{profile-name}.yml,命名規則就是這樣的。然后我們把dev里面的數據庫名改成spring_boot_study_dev,其他不用的配置刪掉。
這就完成了我們開發環境的配置文件編寫。
接著,我們再來一份測試環境的配置。
這里,我們已經完成了多個環境配置文件的編寫。可以看到,不同環境的配置我們寫在不同的配置文件里面,相同的配置我們使用application.yml里面的配置,可以認為是默認配置。我們還差最后一步,使用profiles.active來激活我們當前的需要使用的環境。
profiles.active配置的方式也有幾種,我們從最簡單的開始。我們可以在application.yml里面直接配置spring.profiles.active屬性。
這樣我們就指定了當前的環境變量,現在我們來啟動程序。
我們可以看到日志里面打印了當前profiles active 是dev,說明我們的配置生效了,其實我們后面還可以看到程序并沒有啟動完成,因為我們并沒有創建spring_boot_study_dev這個數據庫,這正好再一次證明我們的配置已經生效。
其實在我們以前沒有配置profiles.active時,默認激活的是default。
現在我們可以通過修改spring.profiles.active屬性來快速的切換環境了。這里筆者要再次提醒一下大家,當我們配置成dev的時候,我們的程序是會讀取application-dev.yml和application.yml兩個配置文件,spring會將兩個配置文件里面的配置進行一個合并,如果兩個文件里面有相同的配置項,將會以application-dev.yml里面的優先級為高,即dev里面的配置將會覆蓋默認的配置。
除了改配置文件,我們還可以在eclipse指定環境變量
通過配置環境變量,同樣能生效,并且,如果在環境變量和配置文件同時配置了的情況下,環境變量的優先級會高于配置文件。
這兩種修改spring.profiles.active的方式是開發時常用的,但是他并不能解決我們部署時候的問題。
假設我們是使用jar包運行,我們可以在執行java -jar命令的時候增加-Dspring.profiles.active=test參數的方式指定環境。
這種配置方式,跟我們修改eclipse環境變量的原理是一樣的。這樣只要我們部署包里面包含了各個環境的配置,我們就可以一個部署包直接在多個環境使用,只需在啟動的時候指定環境名即可。
那如果是Tomcat部署的war包怎么處理呢。這里以linux版本為例,找到catalina.sh文件,修改JAVA_OPTS參數,增加我們需要配置的環境變量,這樣只要這個Tomcat里面部署的應用,spring.profiles.active值都是同一個值。
到此,關于“profiles.active多環境開發、測試、部署過程是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。