Spring-Boot Mutiple Environment Configuration

Spring Boot 多环境配置

application.yml

1
2
3
4
# common properties
spring:
profiles:
active: @profiles.active@

application-dev.yml

1
2
3
# dev properties
spring:
profiles: dev

application-test.yml

1
2
3
# test properties
spring:
profiles: test

application-prod.yml

1
2
3
# prod properties
spring:
profiles: prod

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<dependencies></dependencies>

<profiles>
<!-- Development environment -->
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- Test environment -->
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<!-- Production environment -->
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>

<build></build>

HelloController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.gzhennaxia.admin.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author bo li
* @date 2019-11-28 14:28
*/
@RestController
@RequestMapping("hello")
public class HelloController {

@Value("${spring.profiles.active}")
private String environment;

@GetMapping("env")
public String getEnvironment() {
return "The Environment is " + environment;
}
}

环境切换

默认环境

在项目的pom.xml中,使用<activeByDefault>true</activeByDefault>这段配置,定义了dev为项目的默认环境。所以当开发中启动项目会默认使用application-dev.yml的配置。在控制台的日志的第二行会有这么一段日志The following profiles are active: dev,表示已经加载了开发环境相关的配置。

通过Maven打包时指定环境

使用Maven命令mvn clean package -Pprod对项目的进行打包,然后直接使用java -jar xxx.jar命令启动项目。会发现日志输出了The following profiles are active: prod,说明使用的是生产环境。

使用命令启动时指定环境

首先使用Maven命令mvn clean package对项目进行打包,然后先使用java -jar xxx.jar命令启动项目。会发现日志输出了The following profiles are active: dev,说明启动的是开发环境。接下来使用java -jar xxx.jar --spring.profiles.active=test命令启动项目,会发现日志输出了The following profiles are active: test