摘要:的配置文件默認為或,此外僅以配置為說明。的由的標簽管理。管理由于構建是基于或,此處僅以說明。管理分五步,以下詳細介紹。并且為表示,會將文件內容的替換為相應的變量如文件中的會替換為屬性值。
1. Spring Profile
Spring可使用Profile決定程序在不同環境下執行情況,包含配置、加載Bean、依賴等。
Spring的Profile一般項目包含:dev(開發), test(單元測試), qa(集成測試), prod(生產環境)。由spring.profiles.active屬性決定啟用的profile。
SpringBoot的配置文件默認為 application.properties(或yaml,此外僅以properties配置為說明)。不同Profile下的配置文件由application-{profile}.properties管理,同時獨立的 Profile配置文件會覆蓋默認文件下的屬性。
Maven同樣也有Profile設置,可在構建過程中針對不同的Profile環境執行不同的操作,包含配置、依賴、行為等。
Maven的Profile由 pom.xml 的
此文章不對Spring和Maven的Profile作過多說明,詳細情況請自行查閱。
由于構建是基于Maven(或Gradle,此處僅以Maven說明)。所以使用Maven管理Spring構建時的Profile是非常方便的。
Maven管理Spring Profile分五步,以下詳細介紹。
在SpringBoot MVC項目中,默認以內嵌Tomcat運行,如果需要特殊的設置或者使用Undertow,需要去掉默認的Tomcat依賴:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat
如果你同時使用了 MyBatis,需要去掉tomcat-jdbc依賴:
3.2 Maven Profile設置org.mybatis.spring.boot mybatis-spring-boot-starter org.apache.tomcat tomcat-jdbc
在項目(如果有模塊為具體模塊)的pom.xml下設置:
dev true dev org.springframework.boot spring-boot-starter-tomcat org.apache.tomcat tomcat-jdbc prod prod
從上面的配置可以看出,Maven的Profile配置了兩個:dev和prod,并且在dev中使用了內嵌Tomcat,而 prod 中沒有,所以這兩個Profile打包的文件dev可以直接運行(Plugin使用了SpringBoot Plugin),而prod并不能直接運行(或部署在外部Tomcat下,并不推薦這樣,后面會說明)。
properties中的profileActive是我們申明的屬性,此處對應Spring的Profile值。
SpringBoot的 Profile選擇需要在 application.properties中配置,如果定死在文件,那么每次打包都需要手動修改,很麻煩,而且容易出錯。
Maven的資源過濾功能可以實現在構建時修改以“@xxx@”表示的屬性。資源過濾需要在pom.xml的
src/main/resources application*.properties src/main/resources true application.properties application-${profileActive}.properties
上面的第一個resource去掉了src/main/resources下的所有application*.properties文件,“*”是通配符,表示此處有任何內容(沒有也可以)都匹配。
第二個resource添加了application.properties默認配置文件和由profileActive屬性決定的相應profile配置文件。并且filtering為true表示,會將文件內容的“@xx@”替換為相應的變量(如文件中的@profileActive@會替換為profileActive屬性值)。
在application.properties默認配置文件中配置:
spring.profiles.active = @profileActive@
@profileActive@表示該屬性值會在maven構建時被替換掉。
3.5 構建構建命令:
mvn clean package -Pdev
上面的命令會根據Maven Profile的 dev構建環境包,如果需要prod包,則把-P的參數替換成prod即可。
為了方便我會在每個項目下生成一個build.sh文件,內容如下:
#!/bin/bash profileActive=prod if [ -n "$1" ]; then profileActive=$1 fi mvn clean package -Dmaven.test.skip=true -P$profileActive
該腳本接收一個參數,即打包對應的Profile。默認情況下如果不帶參數,會打包prod環境包。
需要注意的是,該命令跳過了測試。
完成了上面的五步,即可使項目根據你的構建參數的不同,打包出不同環境下運行的包。
第1步去掉了SpringBoot內嵌的tomcat和tomcat-jdbc。使得我們可以決定在什么情況下使用何種容器運行我們的項目。
第2步配置了Maven構建Porfile,使得構建可根據我們的指令分發不同的包。
第3步配置了Maven資源過濾,不僅使得不同Profile下的資源文件互不可見,且替換了資源文件中以“@xx@”表示的屬性值。
第4步使Spring的Profile由Maven決策,這樣,我們就不用每次打包都修改Spring的Profile配置了。
第5步展示了如何執行不同Profile下的構建命令,并且使用了一個Shell腳本方便我們執行構建和跳過測試(多數時候我們在構建項目時先測試,并不需要在構建時測試,測試和構建的解耦使得我們更專注。但同時,如果你忘記了前置測試,也可能會引發未察覺的測試問題)。
5. 參考[1]. http://blog.csdn.net/lihe2008...
[2]. http://blog.csdn.net/hguisu/a...
[3]. https://www.tianmaying.com/tu...
[4]. http://blog.csdn.net/james_wa...
[5]. http://www.jianshu.com/p/755a...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67902.html
摘要:創建統一服務項目可以使用來初始化項目,選擇自己的以來就好。動態刷新配置目前如果我們修改了上的配置并不能馬上生效,需要我們的客戶端工程重啟才行,現在需要改造成自動刷新。 一直使用springboot搭建后端項目,所有的配置都寫到自己的resource目錄下,隨著微服務的項目越來越多,每個項目都需要自己的各種配置文件。而且后期一旦想要修改配置文件,就得重新發布一遍非常的麻煩,現在就來教教大...
摘要:項目上傳將項目上傳到華為云服務器,沒啥好說的。環境搭建建議在環境下安裝,環境搭建比較復雜且容易出錯,使用來安裝環境很方便。使用部署項目將項目復制到服務器中,進入項目路徑下進行打包測試。 項目搭建 Spring Boot 項目代碼 @RestController public class SpringBootDockerApplication { public static vo...
摘要:如刪除臨時文件,清除緩存信息,讀取配置文件信息,數據庫連接等。提供的接口也可以滿足該業務場景。不同點中方法的參數為,而接口中方法的參數為數組。 spring-boot-starter-parent Maven的用戶可以通過繼承spring-boot-starter-parent項目來獲得一些合理的默認配置。這個parent提供了以下特性: 默認使用Java 8 使用UTF-8編碼 一...
摘要:需要注意的是必須要使用版本為以上才支持屬性。與格式文件不同,正對不同的,無法在一個文件設置,官方采用命名形式為格式來達成一樣的效果。采用方式添加的是屬于額外激活的,也就是說覆蓋掉外部傳入的指定的。 showImg(https://segmentfault.com/img/remote/1460000019924197?w=1050&h=500); Spring Boot Profile...
閱讀 1995·2021-11-23 10:08
閱讀 2325·2021-11-22 15:25
閱讀 3269·2021-11-11 16:55
閱讀 763·2021-11-04 16:05
閱讀 2576·2021-09-10 10:51
閱讀 704·2019-08-29 15:38
閱讀 1574·2019-08-29 14:11
閱讀 3480·2019-08-29 12:42