努力经营当下,直至未来明朗!
文章目录
- 一、配置文件作用
- 二、配置文件的格式
- 三、properties配置文件说明
- 1. properties 基本语法
- 2. 读取配置文件
- 3. properties缺点分析
- 四、 yml配置文件说明
- 1. yml基本语法
- 2. yml使用进阶
- 3. 注意:value值加单双引号
- 五、 补充拓展
- 小结
普通小孩也要热爱生活!
一、配置文件作用
- Class字节码文件只能读,不能进行修改
- 配置文件内容是可以直接进行修改的,对于运维人员来说也是比较友好的。
- 重要信息直接存入配置文件(如端口、连接数据库等)
- 配置文件的分类:
1)系统的配置文件:比如连接字符串、日志的相关设置等,是系统定义好的。
2)用户自定义的。 - 整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:
① 数据库的连接信息(包含⽤户名和密码的设置);
② 项⽬的启动端⼝;
③ 第三⽅系统的调⽤秘钥等信息;
④ ⽤于发现和定位问题的普通⽇志和异常⽇志等。
二、配置文件的格式
- Spring Boot 配置⽂件主要分为以下两种格式:
.properties
(早期版本,默认版本)
.yml
(后期版本,可以视为.properties的升级版)
(二者是可以共存的)
- 配置文件是放在resources目录下的
- 约定大于配置:只有叫application.properties、application.yml(也就是前面是application才可以在Spring Boot启动的时候被加载)
- 如果application.properties、application.yml均存在,并且有配置信息冲突时,早期的的application.properties优先!
- 特殊说明:
① 一个项目中可以存放两种配置文件(.properties、.yml),但是不建议一个项目中出现两种配置文件,提高可维护性。
② 当一个项目的某个配置出现在两种格式的配置文件中时,此时匹配项会以properties为主(忽略yml中的配置)。
③ 也就是说:.properties文件的优先级更高,但是加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。 - 注:
1).yml中是会有代码提示的,但是.properties中是不会有任何代码提示的
2)此时需要安装Spring Tools插件,就可以解决默认情况下不支持.properties格式的日志提示的问题了。(这里有点不对,找不到插件!)
三、properties配置文件说明
1. properties 基本语法
-
properties配置文件 的基本语法:
key=value
(注意中间是没有空格的,后面也是没有空格的!!) -
⼩技巧:配置⽂件中使⽤“#”来添加注释信息
-
另外:.properties默认是不支持中文的(yml支持中文),中文乱码问题的处理方法:
① File -> settings(配置当前项目) -> 左边搜索encoding -> 选择 File Encoding -> 全部设置为utf-8(三个) -> ok
② file -> new project settings(配置新建项目) -> 选择settings for new project s-> 后续操作一样
③ 删除原来的application.properties,然后重新创建一个application.properties。
因为之前的配置文件已经是不支持中文编码的文件格式,即使设置了编码格式之后也是没有改变原来的配置文件格式的,所以需要先将之前的配置文件删除掉重新创建,以此来实现中文的支持。
④ 经过以上三步之后才能创建一个不是中文乱码的application.properties文件,并且之后再创建application.properties 也是不会出现中文乱码的。
2. 读取配置文件
读取单个配置文件
在properties中设置配置文件
① 使用@Value
注解来读取配置文件的内容
② @Value 注解使⽤“ ${key值}
”的格式读取,{}中是key值。
③ 即:@Value(“${key值}”)
④ 注:key值不管是在yml中还是properties中都是x.y的形式(但是实际设置配置文件的时候是有区别的!)
[补充] 在yml中设置配置文件以及获取到配置文件
3. properties缺点分析
-
properties配置是以
key=value(没有空格)
的形式进行配置的
-
从配置key可以看出,properties 配置⽂件中会有很多的冗余的信息。
-
要想解决properties文件的冗余信息,就可以使⽤ yml 配置⽂件的格式化了。
四、 yml配置文件说明
- yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
- yml优点:
① 写法简单,可读性更高,语法和JSON类似。
② 支持的数据类型更多。
① 它可以简单表达清单(数组)、散列表、标量等数据形态。
② 它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
③ 可以跨语言使用,如java、golang以及高版本python等
1. yml基本语法
- 基本语法:
Key: value
(注意中间空格不可以省略!) - 使用示例:
- [补] yml是树形结构的配置文件
2. yml使用进阶
- yml配置不同数据类型及 null
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
- 测试:
① 读取为null的配置:多打印一行空行
② 根本不存在的配置:直接报错
- yml配置和读取对象
1)配置对象:不要忘记key: value(空格!)
2)读取对象
注:@Data
是一个集合注解,里面包括get、set、toString、equals等等一系列方法
① 创建一个与对象匹配的类
② 在该匹配类上加上@Data注释以及@ConfigurationProperties(prefix = “xxx”)[
针对的是对象]注释(注意:prefix = “xxx”中的xxx是指配置文件中写好的key值)
③读取赋值的过程是在项目的启动中加载的,要加上 五大类注解
(不能省略)。
④ 然后使用属性注入的方式进行读取
- yml配置和读取集合
1)配置集合
2)读取集合
① 类似于对象的读取,先创建一个类,然后设置注解@ConfigurationProperties(“xxx,即yml中配置的集合名”)
【注意,这里加不加prefix=都是ok的】
② 存储是一个集合,所以在类中声明一个集合,如链表,但是要注意集合名称要和配置中保持一致!!
③ 直接使用属性注入获取就行
3. 注意:value值加单双引号
-
application.yml的键值对
-
测试输出:
-
对双引号中的内容进行转义:
-
小结:yml中单双引号问题:
yml中如果使用了双引号就会按照(原)语义进行执行,如果不加单、双引号 or 加了单引号,那么就默认会将字符串中的特殊字符进行转义,比如\n -> \\n(转义处理)。
五、 补充拓展
- 如果想要了解更多Spring Boot的系统配置项,可以访问官网:系统配置项
- properties 和 yml
① properties 是以
key=value
的形式配置的键值类型的配置⽂件(没有空格);⽽ yml 使⽤的是类似 json
格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
② properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。 】
③ yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
④ yml ⽀持更多的数据类型。
-
Spring Boot读取配置文件的五种方法:
Spring Boot读取配置文件 -
设置不同环境的配置⽂件:
1)创建不同环境的配置⽂件:
application-dev.yml
application-prod.yml
2)在 application.yml 中设置运⾏环境
spring.profiles.active=dev
小结
- 配置文件存储重要数据
- 配置文件格式:.properties、 .yml
- .properties配置:key-value
- .yml配置:key: value(注意空格)
- yml的优点
- yml中value的单双引号使用