目录
一、配置文件的作用
二、配置文件的格式
三、properties 配置文件说明
3.1 properties 基本语法
3.2 读取配置文件
四、yml 配置文件说明
4.1 yml基本语法
4.2 yml 读取文件
4.3 yml使用进阶
4.3.1 配置对象
4.3.2 配置集合
4.3.3 配置Map
NOTE:
- 理论上讲 .properties 和 .yml 可以并存在于一个项目中,当 .properties 和 .yml 并存时,两个配置都会加载。如果配置文件内容有冲突,则以 .properties 为主,也就是 .properties 优先级更高;
- 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。
# 配置项⽬端⼝号
server.port=8080
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
properties 配置如下:
mykey.key1 = bite
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PropertiesController {
@Value("${mykey.key1}")
private String key1;
@RequestMapping("/key")
public String key(){
return "读取到值:"+key1;
}
}
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
username: root
password: root
string:
hello: bite
@RestController
public class ReadYml {
@Value("${string.hello}")
private String hello;
@RequestMapping("/ymlKey")
public String key(){
return "读取到值:"+hello;
}
}
NOTE: value值加单双引号
字符串默认不用加上单引号或者双引号,如果加英文的单双引号可以表示特殊的含义。
- 单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串;如 \n
- 双引号不会转义字符串里面的特殊字符, 特殊字符会表示本身的含义。
yml配置不同数据类型及null:
#以下格式不代表yml文件格式,只是作为说明
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表null
null.value: ~
# "" 空字符串
# 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表示是使⽤引号括起来
empty.value: ''
在yml文件中配置对象,如下所示:
student:
id: 1
name: Java
age: 18
#或者可以采用行内写法
student: {id: 1,name: Java,age: 18}
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {
private int id;
private String name;
private int age;
}
调用类实现如下:
@RestController
public class StudentController {
@Autowired
private Student student;
@RequestMapping("/readStudent")
public String readStudent(){
return student.toString();
}
}
dbtypes:
name:
- mysql
- sqlserver
- db2
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List name;
}
访问集合的实现如下:
@RestController
public class ReadYml2 {
@Autowired
private ListConfig listConfig;
@RequestMapping("/readList")
public String readList(){
return listConfig.toString();
}
}
maptypes:
map:
k1: kk1
k2: kk2
k3: kk3
@Component
@ConfigurationProperties("maptypes")
@Data
public class MapConfig {
private HashMap map;
}
@RestController
public class ReadYml2 {
@Autowired
private MapConfig mapConfig;
@RequestMapping("/readMap")
public String readStudent(){
return mapConfig.toString();
}
}