配置文件

多环境启动配置请参考:多环境启动

spring boot 的配置文件分为三种:properties, yml, yaml

一、配置文件的读取方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server.port=8888

# 自定义属性
origin.href=https://www.pangcy.com
origin.port=8080
origin.domain=www.pangcy.com

# 配置数组
origin.ascii[0]=a
origin.ascii[0]=b
origin.ascii[0]=c
origin.ascii[0]=d
origin.ascii[0]=e

# 配置对象
origin.map[a]=1;
origin.map[b]=2;
origin.map[c]=3;
origin.map[d]=4;
origin.map[e]=5;
PROPERTIES

1. 通过 value 注解获取单个属性

1
2
3
4
5
6
7
8
9
10
11
// 依赖导入
import org.springframework.beans.factory.annotation.Value;

// 使用
public class BookController {
@Value("${server.port}")
private Integer port;
// 获取配置数组中的某个下标的元素
@Value("${origin.ascii[0]}")
private char[] ascii;
}
JAVA

2. 通过自动注入 Enviroment 获取所有配置

1
2
3
4
5
6
7
8
9
10
11
12
// 依赖导入
import org.springframework.core.env.Environment;

public class BookController {
@Autowired
private Enviroment enviroment;

public static void main(String[] args){
// 获取属性
Integer port = enviroment.getProperty("server.port");
}
}
JAVA

3. 通过注册实体类,获取配置

注册实体类

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.pangcy.book.domain;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

// 将这个类注册为 bean, 只有注册为 Bean 才能受到 Spring 的控制
@Component
@ConfigurationProperties(prefix = "origin")
public class Origin {
private String href;
private String domain;
private Integer port;

public char[] getAscii() {
return ascii;
}

public void setAscii(char[] ascii) {
this.ascii = ascii;
}

public Map<Character, Integer> getMap() {
return map;
}

public void setMap(Map<Character, Integer> map) {
this.map = map;
}

private char[] ascii;
private Map<Character, Integer> map;

public String getHref() {
return href;
}

public void setHref(String href) {
this.href = href;
}

public String getDomain() {
return domain;
}

public void setDomain(String domain) {
this.domain = domain;
}

public Integer getPort() {
return port;
}

public void setPort(Integer port) {
this.port = port;
}

@Override
public String toString() {
return "Origin{" +
"href='" + href + '\'' +
", domain='" + domain + '\'' +
", port=" + port +
'}';
}
}
JAVA

注入实体类

1
2
3
4
5
6
7
8
9
10
11
12
// 依赖导入
import com.pangcy.book.domain.Origin;

public class BookController {
@Autowired
private Origin origin;

public static void main(String[] args){
// 获取属性
Integer port = origin.getPort();
}
}
JAVA

二、配置文件分类

1、不同格式运行时优先级

  • application.properties > application.yml > application.yaml

2、不同文件夹下运行时优先级

  • SpringBoot 中4及配置文件

    • 1级:file: config/application.yml 【最高级】
    • 2级:file: application.yml
    • 3及:classpath:config/application.yml
    • 4级:classpath:application.yml 【最低级】
  • 作用

    • 1级与2级留作系统打包后设置通用属性
    • 3级与4级用于系统开发阶段设置通用属性

配置文件
https://blog.pangcy.cn/2023/03/30/后端编程相关/java/springboot/配置文件/
作者
子洋
发布于
2023年3月30日
许可协议