SpringBoot 配置文件
文章目录
- [SpringBoot 配置文件](#SpringBoot 配置文件)
- 一、配置文件作用
-
- [1.1 SpringBoot 配置文件](#1.1 SpringBoot 配置文件)
- 二、配置文件的格式
-
- [2.1properties 基本语法](#2.1properties 基本语法)
-
- 2.1.1读取配置文件信息
- [2.1.2 properties缺点](#2.1.2 properties缺点)
- [2.2 yml 配置文件说明](#2.2 yml 配置文件说明)
-
- [2.2.1 yml语法](#2.2.1 yml语法)
- [2.2.2 yml配置不同数据类型及null](#2.2.2 yml配置不同数据类型及null)
- [2.2.3 yml配置读取](#2.2.3 yml配置读取)
- [2.2.4 yml配置对象](#2.2.4 yml配置对象)
- [2.2.5 yml配置集合](#2.2.5 yml配置集合)
- [2.2.6 yml配置Map](#2.2.6 yml配置Map)
- [2.2.7 yml优缺点](#2.2.7 yml优缺点)
一、配置文件作用
配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。
1.1 SpringBoot 配置文件
SpringBoot 支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到 SpringBoot 的目的。很多项目或者框架的配置信息也放在配置文件中,比如:
- 项目的启动端口
- 数据库的连接信息 (包含用户名和密码的设置)
- 第三方系统的调用密钥等信息
- 用于发现和定位问题的普通日志和异常日志等.
二、配置文件的格式
SpringBoot 配置文件有以下三种:
- application.properties
- application.yml
- application.yaml

说明: - 理论上讲.properties 和.yml 可以并存在于一个项目中,当.properties 和.yml并存时,两个配置都会加载。如果配置文件内容有冲突,则以.properties 为主,也就是.properties 优先级更高。
- 虽然理论上来讲.properties 可以和.yml 共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。
- properties 配置文件说明 properties 配置文件是最早期的配置文件格式,也是创建 SpringBoot
项目默认的配置文件
2.1properties 基本语法
properties 是以键值的形式配置的,key 和 value 之间是以 "=" 连接的
配置文件中使用 "#" 来添加注释信息。

2.1.1读取配置文件信息
@Value 注解使用 "${}" 的格式读取
properties 配置:
java
mykey.key1=hi
读取:
java
@RestController
public class PropertiesController {
@Value("${mykey.key1}")
private String key1;
@RequestMapping("/getkey")
public String key(){
return "key值为"+key1;
}
}

2.1.2 properties缺点
信息冗余,比如图上那些

2.2 yml 配置文件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是 "另一种标记语言。
2.2.1 yml语法
yml 是树形结构的配置文件,它的基础语法是 "key: value"。
key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略,基础语法如下:

2.2.2 yml配置不同数据类型及null
java
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表null
null.value: ~
# "" 空字符串
#, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''
·注意:·
- 字符串默认不用加上单引号或者双引号。
- 单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串。比如 /n
- 双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义。
2.2.3 yml配置读取
方式与properties方式相同,使用@Value注解即可
2.2.4 yml配置对象
不能用 @Value 来读取配置中的对象了,此时要使用另一个注解 @ConfigurationProperties 来读取
java
student:
id: 1
name: liming
age: 18
或者行内写法
java
student: {id: 1,name: Java,age: 18}
@ConfigurationProperties注解需要指定 **prefix属性 **,用来匹配 yml 中配置的对象前缀(比如配置的student)
java
@Repository
@Data
@ConfigurationProperties(prefix = "student")
public class Student {
private int id;
private String name;
private int age;
}
java
@RestController
public class StudentController {
@Autowired
private Student student;
@RequestMapping("getstudent")
public String getStudent(){
return student.toString();
}
}

2.2.5 yml配置集合
java
dbtypes:
name:
- mysql
- sqlserver
- db2
2.2.6 yml配置Map
java
maptypes:
map:
k1: kk1
k2: kk2
k3: kk3
2.2.7 yml优缺点
优点:
- 可读性高,写法简单,易于理解
- 支持多种数据类型
- 支持多种编程语言
缺点:
- 不适合写复杂的配置文件
- 对格式有较强的要求(比如空格)