在項目開發的過程當中,咱們不免會遇到開發、測試、生產等環境的切換,而各個環境的配置確定是不一樣的。傳統的辦法是在項目打包的時候修改配置文件。但人爲作的事情不免產生意外。Spring 爲咱們提供了一種多環境配置文件同時存在,而運行/打包時僅運行所選的配置文件的方式。具體的介紹以下:html
spring: profiles: # active: yaya active: keats
指定激活哪一個文件,值是 application-{profileName}.yml 中的 profileName。用於區分不一樣的運行環境。spring
PS:若是 application.yml 和被激活的 yml 中同時配置了一個相同的鍵,被激活的yml中的值會覆蓋 application.yml 中的值。數據庫
spring: profiles: include: yayaDB,yayaRedis
指定包含(合併)多個yml的內容一塊兒啓動。這樣有助於同環境下yml文件的分類管理app
PS:像上面 include 值是多個的狀況,除了使用 , 分隔的輸入方式外,還可使用 換行 - profileName 的方式,這是 yml 的一種語法。若是不清楚 yml 的語法,能夠參考 SpringBoot入門及YML文件詳解ide
spring: profiles: include: - yayaDB # 注意換行和空格 - yayaRedis
接下來是一個示例的DEMO項目,項目的結構以下:測試
各文件內容以下:fetch
application.ymlurl
spring: profiles: active: yaya # active: keats server: port: 9001 # 若是被激活的 yml 中有相同的配置,會覆蓋此值
application-keats.ymlidea
server: port: 9000 eureka: server: enable-self-preservation: false # 關閉自我保護 eviction-interval-timer-in-ms: 4000 # 剔除服務間隔,單位/ms instance: hostname: localhost client: register-with-eureka: false # 是否將本身註冊到註冊中心 fetch-registry: false # 是否從Eureka中獲取註冊信息 service-url: # Eureka Client 的請求地址 defaultZone: http://#{eureka.instance.hostname}:#{server.port}/eureka/
application-yaya.ymlcode
spring: profiles: include: yayaDB,yayaRedis
application-yayaDB.yml
# 專門配置DB 的yml,實際項目中能夠根據需求,配置文件多了須要分類就分類,少了用不着分類就一種環境一個YML# 這裏由於Eureka服務用不到鏈接數據庫,用端口號配置信息代替 server: port: 9100
application-yayaRedis.yml
# 能夠專門用來配置Redis的信息。這裏由於用不到Redis。我就用除端口之外的其餘配置信息填充了 eureka: server: enable-self-preservation: false # 關閉自我保護 eviction-interval-timer-in-ms: 4000 # 剔除服務間隔,單位/ms instance: hostname: localhost client: register-with-eureka: false # 是否將本身註冊到註冊中心 fetch-registry: false # 是否從Eureka中獲取註冊信息 service-url: # Eureka Client 的請求地址 defaultZone: http://#{eureka.instance.hostname}:#{server.port}/eureka/
按照以上的 yml 配置以後,就能夠經過註釋與放開不一樣的 active,來實現環境的切換了。
順便教你們另一個技能:
選擇對應的項目啓動類,點擊 Edit Configurations
取消勾選: Single instance only