1. 程式人生 > >環境隔離與屬性替換

環境隔離與屬性替換

環境隔離的意義

不同環境下屬性值可能不同,比如開發環境和測試環境的資料庫連線的配置不同。 因此需要環境隔離機制,指定不同的環境。

maven環境隔離與屬性替換

<resources>與<profile>標籤共同定義不同的環境

<resources>指定配置檔案,<profile>指定屬性

程式碼塊          
<build>
    <resources>
            <resource>
                <directory>src/main/resources/${conf-dir}</directory>
            </resource>
            <resource>
                <directory>src/main/resources/base</directory>
            </resource>
    </resources>
</build>
<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <conf-dir>dev</conf-dir>
                <appkey>abc</appkey>
            </properties>
        </profile>
        <profile>
            <id>stage</id>
            <properties>
                <conf-dir>stage</conf-dir>
                <appkey>def</appkey>
            </properties>
        </profile>
</profiles>
 

啟用環境

編譯打包階段

1.mvn clean -U package -Dmaven.test.skip=true 啟用預設的環境,<activeByDefault>標籤指定的環境。

2.mvn clean -U package -P stage -Dmaven.test.skip=true 啟用stage環境

屬性替換

編譯打包階段

替換的目標:pom檔案與標籤<resources>指定目錄下的配置檔案

替換的字元:檔案裡面的佔位符 ${}

 

springBoot環境隔離與屬性值使用

application.yml作為配置檔案,spring.profiles指定環境

程式碼塊          
---
# 全域性配置
spring:
  profiles:
    active: dev
  application:
    name: pay-front
---
# dev
spring:
    profiles: dev
    appkey: com.sankuai.zc.open.payfront
---
# stage
spring:
    profiles: stage
    appkey: com.sankuai.zc.open.payfront
---
 

啟用環境

啟動階段

1.java -jar xxxxx.jar 啟用預設的環境,spring.profiles.active指定的環境。

2.java -jar xxxxx.jar --spring.profiles.active=stage 啟用stage環境

屬性注入

執行階段

注入的目標:為java類的欄位賦值

使用的方式:佔位符${屬性名}

注入的方式:方式1:bean例項化的xml檔案中,直接根據佔位符${屬性名}獲取值

方式2:bean定義程式碼中,利用註解將程式碼中需要使用的屬性資訊注入@Value("${屬性名}")