SpringProfile輕松切換多環境配置文件


在項目開發的過程中,我們難免會遇到開發、測試、生產等環境的切換,而各個環境的配置肯定是不同的。傳統的辦法是在項目打包的時候修改配置文件。但人為做的事情難免產生意外。Spring 為我們提供了一種多環境配置文件同時存在,而運行/打包時僅運行所選的配置文件的方式。具體的介紹如下:

Spring提供了兩種屬性:

spring.profiles.active

spring:
  profiles:
#    active: yaya
    active: keats

指定激活哪個文件,值是 application-{profileName}.yml 中的 profileName。用於區分不同的運行環境

PS:如果 application.yml 和被激活的 yml 中同時配置了一個相同的鍵,被激活的yml中的值會覆蓋 application.yml 中的值。

spring.profiles.include

spring:
  profiles:
    include: yayaDB,yayaRedis

指定包含(合並)多個yml的內容一起啟動。這樣有助於同環境下yml文件的分類管理

PS:像上面 include 值是多個的情況,除了使用 , 分隔的輸入方式外,還可以使用 換行 - profileName 的方式,這是 yml 的一種語法。如果不清楚 yml 的語法,可以參考 SpringBoot入門及YML文件詳解

spring:
  profiles:
    include:
      - yayaDB # 注意換行和空格
      - yayaRedis

接下來是一個示例的DEMO項目,項目的結構如下:

1582377859097

各文件內容如下:

application.yml

spring:
  profiles:
    active: yaya
#    active: keats
server:
  port: 9001 # 如果被激活的 yml 中有相同的配置,會覆蓋此值

application-keats.yml

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.yml

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,來實現環境的切換了。

順便教大家另外一個技能:

Idea將同一個項目多次啟動

選擇對應的項目啟動類,點擊 Edit Configurations

1582378343139

取消勾選: Single instance only

1582378399992


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM