目的
在實際的項目上,一般會分三種環境dev、test、prod來方便我們的開發和部署,要求我們在開發的時候可以方便地進行環境的切換,又要滿足在發佈版本的時候可以儘可能減少測試人員的配置。
Spring Profile
多環境
爲了實現多環境配置,我們可以在本地開發的時候在Resource文件夾下新建不同環境的配置文件,如下圖所示:
這時候我們只需要在主配置文件application.yml文件使用spring.profiles.active = dev/test/prod來進行不同環境的切換
spring:
profiles:
active: dev #加載dev配置文件
經過上述步驟,我們即可在本地開發時根據不同的環境進行測試。
主配置文件與不同環境的配置文件
Spring Profile有一個特性即可以在application.yml配置通用的內容,在application-dev.yml文件中配置不同文件的差異化配置,這樣可以精簡我們的配置文件。配置如下:
# 主配置文件主要用來存放公共設置,不受環境配置影響
server:
port: 8082 # 指定端口號
context-path: /server # 指定訪問資源的根路徑
spring:
profiles:
active: dev
dev配置文件
# 主要用來存放不同環境差異化配置,包括ftp地址、數據庫連接等
spring:
datasource:
username: xxx
password: xxx
url: xxx
driver-class-name: oracle.jdbc.driver.OracleDriver
上述解決方案雖然可以解決我們的環境問題,但是不夠優雅,還有一些值得優化的地方,比如打包出的配置文件有四個、每次需要手動修改主配置文件的環境信息等。
IDEA上運行的時候配置
idea上運行的時候,下圖中的active profiles填寫選擇生效的配置文件,例如prod。
Spring 中爲我們提供了 Profile 這個功能。我們只需要在啓動的時候添加一個虛擬機參數,激活自己環境所要用的 Profile 就可以了。操作起來很簡單,只需要爲不同的環境編寫專門的配置文件,如:application-dev.yml
、application-prod.yml
, 啓動項目時只需要增加一個命令參數 --spring.profiles.active=環境配置
即可,啓動命令如下:
java -jar hello-spring-cloud-alibaba-nacos-provider-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod
Maven Profile
Profile配置
Maven 也提供了 Profile 支持,它允許我們在 pom.xml
中定義多個 Profile ,每個 profile 可以指定自己的一些配置、依賴、觸發條件等。例如:
按照上述的配置,我們配置了dev/test/prod三種配置並默認選擇dev環境。
資源過濾
在進行打包的時候,我們並不需要把dev或者test等配置文件打包進行,具體什麼需要過濾,什麼需要保留,按需配置。
IDEA上運行的時候配置