文章目录
- SpringBoot 配置文件
- 1. 配置文件的作用
- 2. 配置文件的格式
- 3. properties配置文件说明
- 3.1 properties基本语法
- 3.2 读取配置文件
- 3.3 properties缺点分析
- 4. yml配置文件说明
- 4.1 yml基本语法
- 4.2 yml使用进阶
- 4.2.1 yml配置不同的数据类型及null
- 4.2.1 yml配置的读取
- 4.2.2 配置对象
- 4.2.3 配置集合
- 5. properties VS yml
SpringBoot 配置文件
1. 配置文件的作用
整个项目当中,所有重要的数据都是在配置文件当中配置的,比如:
- 数据库的连接信息(包含用户名和密码的配置)
- 项目的启动端口
- 第三方系统的调用秘钥
- 用于发现和定位问题的普通日志和异常日志
想象一下如果没有配置信息,那么SpringBoot项目不能连接数据库和操作数据库,甚至不能保存可以用于排查问题的关键日志,所以配置文件是非常重要的
2. 配置文件的格式
SpringBoot配置文件主要有以下两种格式:
- .
properties
.yml
特殊说明:
- 理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项 ⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”, 那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载 完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
- 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配 置⽂件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰⼀样,不管是⽼款的服 装还是新款的服装,⼀定要统⼀了才好看。
3. properties配置文件说明
3.1 properties基本语法
properties是以键值的形式配置的,key 和 value 之间是用=连接的
server.port=8080
spring.datasource.url=Jdbc:mysql://127.0.0.1:3306/zy?characterEncoding=utf8&&useSSL=false
spring.datasource.name=root
spring.datasource.password=123456
配置文件当中使用# 来添加注释信息
3.2 读取配置文件
如果在项目当中,主动读取配置文件当中的内容,可以使用@Value注解来实现
@Value注解使用“${}"的格式来读取
3.3 properties缺点分析
配置文件当中会有很多冗余的信息。
4. yml配置文件说明
yml优点
- 可读性高, 写法简单,易于理解,它的语法和JSON类似
- 支持更多的数据类型,它可以简单的表达清单、散列表、标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件
- 支持更多的编程语言
4.1 yml基本语法
它的基础语法是key: value
注意:key和value之间使用英文冒号加空格的方式组成,其中的空格不可以省略
spring:
datasource:
url: jdbc
name: root
password: 123456
4.2 yml使用进阶
4.2.1 yml配置不同的数据类型及null
string.value: Hello
boolean.value: true
int.value: 13
null.value: ~
4.2.1 yml配置的读取
yml配置读取方法和properties相同,使用@Value注解就可以
yml当中的字符串默认不用加上单引号或者双引号
- 单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- 双引号不会转义字符串里面的特殊字符:特殊字符会作为本身想要表示的意思
4.2.2 配置对象
student:
id: 1
name: java
age: 18
student2: {id: 2, name: java, age: 18}
两种配置文件的方法。
想要读取要使用一个新的注解。
@Data
@ConfigurationProperties(prefix = "student")
@Component
public class Student {
private int id;
private String name;
private int age;
}
@Data注解包含了类对象的各种方法,如get和set
4.2.3 配置集合
dptypes:
name:
- mysql
- sqlservice
- db2
dptypes2: {name: [mysql, sqlservice, db2]}
集合的读取和对象也是一样的
5. properties VS yml
- properties是以key=value 的形式配置的键值类型的配置文件,而yml使用的是类似JSON格式的树形配置方式进行配置的,yml层级之间使用换行缩进凡是进行配置,key和value之间使用英文冒号加空格的方式设置,并且空格不可以省略
- properties为早期并且默认的配置文件的格式,但其配置存在一定的冗余数据,使用yml可以很好的解决冗余问题
- yml通用性好,支持更多的语言
- yml支持更多的数据类型
设置不同环境的配置文件:
- 创建不同环境的配置文件
- application-dev.yml
- application-prod.yml
- 在application.yml 中设置运行环境
spring.profiles.active=dev