衆所周知,在軟件開發過程當中,咱們通常會有生產環境,開發環境,測試環境等等,針對這些環境,咱們須要在配置文件對相同的參數,設置不一樣的值,那麼,如何作到簡單、優雅、快速的進行切換呢?spring
首先,咱們知道在SpringBoot中有提供:app
spring: profiles: active: pro
這個屬性來選擇對應環境的配置文件,固然也能夠同時設置多個配置文件:工具
spring: profiles: active: - pro - test
可是有一個問題,這種方式不夠快速簡單,須要每次打包時修改參數值;要麼就是啓動時,增長--spring.profiles.active這個參數;過於麻煩,那麼有什麼方案能夠更簡單呢。測試
咱們一般使用Maven做爲項目構建工具,在Maven中一樣也提供了針對自定義配置信息這一功能,即Profile。ui
咱們的思路以下,在Maveni進行打包時,經過設置Maven的參數,從而控制SpringBoot的Profile。spa
配置以下:code
#這裏只給出主要配置 <profiles> <profile> <id>dev</id> <properties> <druid.profiles.active>druid-dev</druid.profiles.active> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>pro</id> <properties> <druid.profiles.active>druid-pro</druid.profiles.active> </properties> </profile> </profiles> <resources> <resource> <directory>src/main/resources</directory> #這個必定要加,不然不會進行替換 <filtering>true</filtering> </resource> </resources>
而後,SpringBoot的yml配置文件以下:xml
spring: profiles: active: @druid.profiles.active@
當咱們install(打包)時,只須要設置 -P dev,這樣就能夠設置爲dev環境的配置文件。開發
讓打包後的jar包只包含對應環境的配置文件,在Maven的pom文件中增長以下配置:io
<resources> #在這個resource中排除全部的yml文件 <resource> <directory>src/main/resources</directory> <excludes> <exclude>application*.yml</exclude> </excludes> </resource> #在這個resource中,根據profile引入對應的配置文件 <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application.yml</include> #根據profile引入對應的配置文件 <include>application-${druid.profiles.active}.yml</include> </includes> </resource> </resources>