一、簡單介紹
在項目的開發中,有些配置文件在開發、測試或者生產等不同環境中可能是不同的,例如數據庫連接、redis的配置等等。那我們如何在不同環境中自動實現配置的切換呢?Spring給我們提供了profiles機制,下面看看在Spring Boot中是如何使用Profiles功能的。
在Spring Boot中多環境配置文件名需要使用application-{profile}.properties的格式,這裏的**{profile}**對應的是你的環境標識。例如:
- application-dev.properties — 這是開發環境
- application-prod.properties — 這是生產環境
二、激活指定profile
我們在首先在Resource目錄下新建兩個配置文件,分別命名爲application-dev.properties以及application-prod.properties,爲了方便看到區別,我們分別在三個配置文件中分別指定tomcat啓動端口:
application.properties
server.port=8081
application-dev.properties
server.port=8082
application-prod.properties
server.port=8083
這個時候我們沒有指定任何profile,執行啓動類的main方法,可以看到:
Tomcat started on port(s): 8081 (http) with context path ''
程序會默認加載application.properties中的配置,我們想要使用對應的環境,只需要在application.properties中使用spring.profiles.active屬性來設置,值對應上面提到的{profile},這裏就是指dev、prod:
server.port=8081
spring.profiles.active=dev
重新啓動Main方法:
Tomcat started on port(s): 8082 (http) with context path ''
可以看到tomcat啓動端口爲8082。
####從上面的結果可以看出,application-dev.properties中的配置覆蓋了application.propertie中的配置。我們在配置文件中可以將與環境無關的屬性放到application.propertie中進行配置,而根據環境的變化而變化的配置放到各個application-{profile}.properties文件中。
三、激活profile的方式
上面展示了第一種激活profile的方式,即在application.properties中指定屬性spring.profiles.active的值。但是這種方式在實際項目中的使用並不合適,因爲你每次提交代碼還要手動修改pring.profiles.active的值。
第二種可以使用命令行的方式,Spring Boot的程序一般是打成jar包,在使用java -jar 執行jar包的時候,可以再後面加上:
--spring.profiles.active=dev;
例如
java -jar target/spring-boot-helloworld-0.0.1.jar --spring.profiles.active=prod
可以看到啓動端口爲:
Tomcat started on port(s): 8083 (http) with context path ''
若是使用IDEA進行開發的話,還可以修改啓動配置:
之後執行Main方法,依然激活了dev的配置。
第三種是修改虛擬機的配置,在虛擬機配置哪裏加上:
-Dspring.profiles.active=dev
之後執行Main方法,同樣激活了dev的配置。