本文介紹spring boot項目中環境配置切換的過程。java
在實際的項目開發中,常常須要不一樣的環境配置,如開發時不能直接連生產環境的數據庫,而上線時就須要連生產環境的數據庫。這就要求項目可以切換環境配置。mysql
spring boot項目中,application.properties
是配置文件,實際上咱們還能夠引入不一樣環境的配置文件,如:application-dev.properties
,application-prod.properties
,經過指定spring.profiles.active
的值切換配置文件,好比在application.properties
中指定:git
spring.profiles.active=xxx
就可加載application-xxx.properties
配置。github
1.上面提到的application.properties
設置spring.profile.active
的值。web
2.命令行中指定參數redis
經過指定jvm系統參數spring
java -jar -Dspring.profiles.active=prod springboot-profile-demo 0.0.1-SNAPSHOT.jar
經過指定應用參數sql
java -jar --spring.profiles.active=dev springboot-profile-demo 0.0.1-SNAPSHOT.jar
建立一個簡單的spring boot項目,引入不一樣的環境配置,用不一樣方法切換環境,訪問接口打印當前環境。shell
如沒有開發環境,可參考前面章節:[spring boot 開發環境搭建(Eclipse)]。數據庫
打開Eclipse,建立spring boot的spring starter project項目,選擇菜單:File > New > Project ...
,彈出對話框,選擇:Spring Boot > Spring Starter Project
,在配置依賴時,勾選web
,完成項目建立。
以下圖,除了application.properties
,還添加了:
application-dev.properties
- 開發環境配置application-prod.properties
- 生產環境配置application-test.properties
- 測試環境配置application.properties文件內容
## 生產/開發等環境配置, 加載不一樣的配置文件 spring.profiles.active=dev ## 服務器端口,默認是8080 server.port=8096
application-dev.properties文件內容
## profile 名稱 profile.name=dev
application-prod.properties文件內容
## profile 名稱 profile.name=prod
application-test.properties文件內容
## profile 名稱 profile.name=test
項目目錄結構以下圖,咱們實現了一個接口,訪問此接口打印當前環境名稱。
經過@Value
註解讀取profile.name
,賦給profileName
。訪問/hello
接口打印當前環境名稱。
@RestController public class HelloController { @SuppressWarnings("unused") private static final org.slf4j.Logger log = LoggerFactory.getLogger(HelloController.class); // 當前環境配置名稱 @Value("${profile.name}") //讀取當前環境配置名稱 private String profileName; @RequestMapping(value="/hello", method = RequestMethod.GET, produces="application/json") public String hello() { return "當前環境:" + profileName; } }
修改application.properties文件中的spring.profiles.active
,加載對應的配置文件,而後訪問接口/hello
## 生產/開發等環境配置, 加載不一樣的配置文件 spring.profiles.active=test
Eclipse左側,在項目根目錄上點擊鼠標右鍵彈出菜單,選擇:run as -> spring boot app
運行程序。 打開Postman訪問接口,運行結果以下: