【Springboot】test、dev、stage、prod多環境配置


本文例程下載:https://files.cnblogs.com/files/heyang78/redisCache_multiEnv_config_210921.rar

本文適用版本:Spring Boot v2.5.4

本文使用配置文件類型:YAML,非properties,這種文件用縮進代表層級關系,需要特別注意的是冒號“:”必須是英文類型的,且后面有個空格,如:

server:
    port: 8080
myenv:
    name: 開發環境

如果寫成中文冒號,或者冒號后面沒有空格,可能會有怪異結果出現,大家務必小心檢查。

 

下面正文開始

需求:

由application.yml指定環境是dev、test或是stage、prod,環境細節在三個不同文件里書寫。

 

實現步驟:

1.准備application.yml

在src/main/resource目錄下刪除原有文件application.properties(如果有的話),新建文本文件application.yml,內容如下:

#application.yml
spring:
    profiles:
        active: dev

第一行為注釋可以忽略,下面三行的意思是讓SpringBoot去找application-dev.yml文件(也在src/main/resource目錄下),如果將dev修改成prod,那么會讓SpringBoot去找application-prod.yml文件,其它test、stage據此類推。

 

2.准備application-dev.yml、application-prod.yml、application-test.yml三個文件,三個文件內容如下:

application-dev.yml

server:
    port: 8080
myenv:
    name: 開發環境

application-prod.yml

server:
    port: 8088
myenv: 
    name: 生產環境

application-test.yml

server: 
    port: 8085
myenv: 
    name: 測試環境

如果還有更多的環境,如application-stage.yml,拷貝一份改名修改即可。

 

3.如果上兩步都正確,那多環境設置實際就成功了,啟動啟動類,在控制台可以看到是那種環境啟動了,及指定的端口信息:

2021-09-21。。。。 com.hy.myapp.MyApplication               : The following profiles are active: dev 2021-09-21。。。。 o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)

從上面可以看出當前是開發環境,服務端口是8080。

我們還可以運行測試類來確定當前環境:

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
class MyApplicationTests {
    @Value("${server.port}")
    private String serverPort;
    
    @Value("${myenv.name}")
    private String myenvName;
    
    @Test
    void contextLoads() {
    }

    @Test
    void testEnvironment() {
        System.out.println("myenvName="+myenvName);
        System.out.println("serverPort="+serverPort);
    }
}

上面這個類通過Value注解的方式將端口賦予了serverPort成員,環境名稱賦予了myenvName成員,我們跑以下junit就知道當前環境了。

2021-09-21 14:55:42.154  INFO 2300 --- [           main] com.hy.myapp.MyApplicationTests          : Started MyApplicationTests in 3.154 seconds (JVM running for 5.168)
myenvName=開發環境
serverPort=8080

 

好了,到此SpringBoot的多環境設置就此完畢。主要是配置,沒什么技巧,確實不難。雖然一眼就看會了,但還是自己親手動手做一遍比較好,因為魔鬼經常藏匿在細節中,不親歷親為,說不定什么時候蹦出來就麻爪了。

END

 


免責聲明!

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



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