SpringBoot——多环境配置(四)

properties

在主配置文件编写的时候,文件名可以是 application-{name}.properties.默认使用的是application.properties.

那么如何在配置文件中激活其他的配置文件呢?只需要在 application.properties 启用其他文件。

1
2
# 激活 application-prod.properties文件
spring.profiles.active=prod

yml

yml 配置文件编写时可以参照 properties 文件编写多个环境配置文件,也可以在一个yml文件中进行多环境配置,如下:

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
person:
last-name: cyy
age: 28
birth: 2020/02/02
email: gmail@gmail.com
maps:
key1: java
key2: golang
lists:
- a
- b
- c
spring:
profiles:
active: prod
# 使用三个---进行文档块区分
---
server:
port: 8084
spring:
profiles: dev
---
server:
port: 8085
spring:
profiles: prod

@profile

使用 spring.profiles.active 参数,搭配@Profile注解,可以实现不同环境下(开发、测试、生产)配置参数的切换。

1.@Profile注解使用范围:@Configration 和 @Component 注解的类及其方法,其中包括继承了@Component的注解:@Service、@Controller、@Repository等…

2.@Profile可接受一个或者多个参数,例如:

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
31
32
33
34
@Data
@Component
@Validated
@Profile("dev","sit")
public class PersonValue {

/**
* 直接从配置文件读取一个值
*/
@Value("${person.last-name}")
private String lastName;

/**
* 支持SpEL表达式
*/
@Value("#{11*4/2}")
private Integer age;

@Value("${person.birth}")
private Date birth;

/**
* 不支持复杂类型
*/
private Map<String, String> maps;
private List<String> lists;

/**
* 不支持数据校验
*/
@Email
@Value("xxx@@@@")
private String email;
}

dev环境与sit环境才会被spring管理。

激活 profile

命令行方式:

1
java -jar order-service-v1.0.jar --spring.profiles.active=dev &> order-service.log &
1
java -Dspring.profiles.active=dev -jar order-service-v1.0.jar &> order-service.log &

系统变量方式:

编辑环境变量配置文件/etc/profile,添加名为SPRING_PROFILES_ACTIVE的环境变量,如下所示:

1
2
# spring 环境激活
export SPRING_PROFILES_ACTIVE=dev

java系统属性方式

1
java -Dspring.profiles.active=dev -jar order-service-v1.0.jar &> order-service.log &
文章目录
  1. 1. properties
  2. 2. yml
  3. 3. @profile
  4. 4. 激活 profile
    1. 4.1. 命令行方式:
    2. 4.2. 系统变量方式:
    3. 4.3. java系统属性方式
|