最近因爲項目要求,原先的項目只有開發環境的項目配置,後來不利於線上測試,因而,最近對於SpringBoot這部分多環境配置在網上查找了相關資料,並實現了配置,因而爲了防止遺忘,特在此進行總結。在此,感謝如下博主的文章:http://www.javashuo.com/article/p-xjzsarrh-nn.html;http://www.javashuo.com/article/p-kffplvoa-nm.html。java
好啦,廢話很少說,開啓正文(好像很正式的樣子呢。。。。。。)spring
下面以一個小案例,進行說明。springboot
如圖所示,下圖是案例中的三個配置文件,其中,服務器
application.yml是啓動服務時,服務器會自動加載的配置文件,app
application-dev.yml 表示的是開發環境的配置文件,maven
application-prod.yml 表示的是生產環境的配置文件,ide
對於,dev和prod這兩個文件在啓動服務時,服務器不會自動加載,那麼在不一樣的環境中時怎麼調用不一樣的文件的呢?測試
主要有如下兩種方式:idea
具體操做步驟以下:spa
1> 進入到項目目錄下,先用mvn install命令對項目進行打包,執行完此步驟後,會在項目對應的target目錄下生成該項目對應的jar包
2> 進入target目錄,執行命令:java -jar 生成的jar包 --spring.profiles.active=prod
經過此命令以後,項目就會調用application-prod.yml配置文件,即以生產環境的配置要求啓動服務。同理,如果開發環境,只需將prod改成dev便可。
具體步驟以下:
1> application.yml中將spring.profiles.active的值改爲spring.profiles.active=@activatedProperties@,這裏的@activatedProperties@是一個變量對應pom文件裏的環境配置。
下面爲pom文件的配置<profiles> <profile>
<id>dev</id> <properties> <!-- 環境標識,須要與配置文件的名稱相對應 --> <activatedProperties>dev</activatedProperties> </properties> <activation> <!-- 默認環境 --> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <!-- 測試環境 --> <activatedProperties>test</activatedProperties> </properties> </profile> <profile> <id>prod</id> <properties> <!-- 生產環境 --> <activatedProperties>prod</activatedProperties> </properties> </profile> </profiles>
注意:<activatedProperties>dev</activatedProperties>中的dev與配置文件名稱application-dev.yml要一致
activatedProperties名稱對應application.properties配置文件中的spring.profiles.active=@activatedProperties@
當maven打包時會用pom文件裏<activatedProperties>dev</activatedProperties>中的值替換掉application.properties配置文件中的@activatedProperties@
2> 執行Maven打包命令mvn clean package,觀察控制檯日誌
已經構建成功,刷新一下項目,target會生成SpringbootMybatis-0.0.1-SNAPSHOT.jar包。
1.=='@' that cannot start any token. (Do not use @ for indentation)
在本地啓動該項目時有時候會報以下錯誤
found character '@' that cannot start any token. (Do not use @ for indentation) in 'reader', line 4, column 11: name: @profiles.active@
意思是識別不了@profiles.active@這個變量,這是由於這個變量沒有被替換成咱們須要的參數,如test,prod等,因此在本地啓動時要加上參數啓動,這樣springboot會自動替換掉這個變量。
做者使用的是idea,因此啓動springboot時在右上Edit Configurations-->Active Profiles 增長一個參數,參數值爲你須要運行的環境名稱,如test
注:上述中的application-dev.yml、application-prod.myl等只是演示案例中名字,並不是全部項目都是如此,還請各位以實際項目爲主。