文章目录

  • 一、配置文件作用
  • 二、配置文件的格式
  • 三、properties配置文件说明
  • 1. properties 基本语法
  • 2. 读取配置文件
  • 3. properties缺点分析
  • 四、 yml配置文件说明
  • 1. yml基本语法
  • 2. yml使用进阶
  • 3. 注意:value值加单双引号
  • 五、 补充拓展
  • 小结




一、配置文件作用

  1. Class字节码文件只能读,不能进行修改
  2. 配置文件内容是可以直接进行修改的,对于运维人员来说也是比较友好的。
  3. 重要信息直接存入配置文件(如端口、连接数据库等)
  4. 配置文件的分类:
    1)系统的配置文件:比如连接数据库的配置、端口号的设置、日志的相关设置等,是系统定义好的。
    2)用户自定义的配置文件。
  5. 整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

数据库的连接信息(包含⽤户名和密码的设置等);
② 项⽬的启动端⼝
③ 第三⽅系统的调⽤秘钥等信息
④ ⽤于发现和定位问题的普通⽇志和异常⽇志等。


二、配置文件的格式

  1. Spring Boot 配置⽂件主要分为以下两种格式:
    .properties (早期版本,默认版本)
    .yml (后期版本,可以视为.properties的升级版)

(二者是可以共存的)

  1. 配置文件是放在resources目录下的
  2. 约定大于配置:只有叫application.properties、application.yml(也就是前面是application才可以在Spring Boot启动的时候被加载
  3. 如果application.properties、application.yml均存在,并且有配置信息冲突时,早期的的application.properties优先!
  4. 特殊说明
    ① 一个项目中可以存放两种配置文件(.properties、.yml),但是不建议一个项目中出现两种配置文件,通常是一个项目一种格式配置文件,提高可维护性。
    ② 当一个项目的某个配置出现在两种格式的配置文件中时,此时匹配项会以properties为主(忽略yml中的配置)。
    ③ 也就是说:.properties文件的优先级更高,但是加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
  5. 注:.properties就类似于“老款”服饰,而.yml是“新款”

三、properties配置文件说明

1. properties 基本语法

  1. properties配置文件 的基本语法:
    key=value(注意中间是没有空格的,后面也是没有空格的!!)
  2. ⼩技巧:配置⽂件中使⽤“#”来添加注释信息
  3. 另外:.properties默认是不支持中文的(yml支持中文),中文乱码问题的处理方法(但是,该方法受到Spring版本限制,某些版本可以解决乱码,另外一些则不能):
    ① File -> settings(配置当前项目) -> 左边搜索encoding -> 选择 File Encoding -> 全部设置为utf-8(三个) -> ok
  4. spring boot有哪些配置文件 spring boot 配置文件_spring boot

② file -> new project settings(配置新建项目) -> 选择settings for new project s-> 后续操作一样

spring boot有哪些配置文件 spring boot 配置文件_properties_02

删除原来的application.properties,然后重新创建一个application.properties。

因为之前的配置文件已经是不支持中文编码的文件格式,即使设置了编码格式之后也是没有改变原来的配置文件格式的,所以需要先将之前的配置文件删除掉重新创建,以此来实现中文的支持。

④ 经过以上三步之后才能创建一个不是中文乱码的application.properties文件,并且之后再创建application.properties 也是不会出现中文乱码的。

⑤ 或者:直接在类外加上注解,指定配置文件以及编码方式

spring boot有哪些配置文件 spring boot 配置文件_properties_03

⑥ 所以:非要使用中文的话,最好的方法是直接使用.yml作为配置文件


2. 读取配置文件

读取单个配置文件

在properties中设置配置文件

spring boot有哪些配置文件 spring boot 配置文件_spring boot_04

① 使用@Value注解来读取配置文件的内容

② @Value 注解使⽤“ ${key值}”的格式读取,{}中是key值。

③ 即:@Value(“${key值}”)

④ 注:key值不管是在yml中还是properties中都是x.y的形式(但是实际设置配置文件的时候是有区别的!)

spring boot有哪些配置文件 spring boot 配置文件_spring_05


spring boot有哪些配置文件 spring boot 配置文件_spring_06

[补充] 在yml中设置配置文件以及获取到配置文件

spring boot有哪些配置文件 spring boot 配置文件_spring_07


3. properties缺点分析

  1. properties配置是以key=value(没有空格)的形式进行配置的
  2. spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_08

  3. 从配置key可以看出,properties 配置⽂件中会有很多的冗余的信息
  4. 要想解决properties文件的冗余信息,就可以使⽤ yml 配置⽂件的格式化了。
  5. 配置文件中出现中文会出现乱码问题:
  6. spring boot有哪些配置文件 spring boot 配置文件_properties_09


四、 yml配置文件说明

  1. yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
  2. yml优点:
    写法简单,可读性更高,语法和JSON类似。
    ② 支持的数据类型更多。

① 它可以简单表达清单(数组)、散列表、标量等数据形态。
② 它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。

③ 可以跨语言使用,如java、golang以及高版本python等

  1. yml是支持中文的,不会出现乱码问题。

1. yml基本语法

  1. 基本语法:Key: value (注意value前面的空格不可以省略!
  2. 使用示例:
  3. [补] yml是树形结构的配置文件

2. yml使用进阶

  1. 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: ~
  1. 测试:

① 读取为null的配置:多打印一行空行

spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_10


② 根本不存在的配置:直接报错

spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_11


spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_12

  1. yml配置和读取对象

1)配置对象:不要忘记key: value(空格!

spring boot有哪些配置文件 spring boot 配置文件_properties_13

2)读取对象

注:@Data是一个集合注解,里面包括get、set、toString、equals等等一系列方法,加上该注解之后就类似已经写了getter、setter、toString等方法(一定要加!!

① 重新创建一个与对象匹配的类,属性名要与配置项中保持一致

② 在该匹配类上加上@Data注释以及@ConfigurationProperties(prefix = “xxx”)[针对的是对象]注释(注意:prefix = “xxx”中的xxx是指配置文件中写好的key值;也**可以直接"key值"**不写prefix)

③读取赋值的过程是在项目的启动中加载的,要加上 五大类注解(不能省略)。

spring boot有哪些配置文件 spring boot 配置文件_spring_14

④ 然后再另外的那个类中使用属性注入的方式进行读取

spring boot有哪些配置文件 spring boot 配置文件_properties_15


spring boot有哪些配置文件 spring boot 配置文件_spring boot_16

  1. yml配置和读取集合

1)配置集合

spring boot有哪些配置文件 spring boot 配置文件_properties_17

2)读取集合

① 类似于对象的读取,先创建一个类,然后设置注解@ConfigurationProperties(“xxx,即yml中配置的集合名”) 【注意,这里加不加prefix=都是ok的】

② 存储是一个集合,所以在类中声明一个集合,如链表,但是要注意集合名称要和配置中保持一致!!

③ 直接使用属性注入获取就行

spring boot有哪些配置文件 spring boot 配置文件_spring_18


spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_19


spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_20

3. 注意:value值加单双引号

  1. application.yml的键值对
  2. spring boot有哪些配置文件 spring boot 配置文件_properties_21

  3. 测试输出:
  4. spring boot有哪些配置文件 spring boot 配置文件_spring boot_22


  5. spring boot有哪些配置文件 spring boot 配置文件_spring_23

  6. 对双引号中的内容进行转义:
  7. spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_24

  8. 小结:yml中单双引号问题:
    yml中如果使用了双引号就会按照(原)语义进行执行,如果不加单、双引号 or 加了单引号,那么就默认会将字符串中的特殊字符进行转义,比如\n -> \\n(转义处理)。

五、 补充拓展

  1. 如果想要了解更多Spring Boot的系统配置项,可以访问官网:系统配置项
  2. properties 和 yml【面试题】

① properties 是以 key=value 的形式配置的键值类型的配置⽂件(没有空格);⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。 ② properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。 】 ③ yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。 ④ yml ⽀持更多的数据类型。

  1. Spring Boot读取配置文件的五种方法:Spring Boot读取配置文件
  2. 设置不同环境的配置⽂件:

1)创建不同环境的配置⽂件:
① 开发环境:application-dev.yml
② 生产环境:application-prod.yml

2)在 application.yml 中设置运⾏环境

# 去选择使用哪种环境(生产or开发)
spring:
  profiles:
    active: dev

小结

  1. 配置文件存储重要数据
  2. 配置文件格式:.properties、 .yml
  3. .properties配置:key=value
  4. .yml配置:key: value(注意空格)
  5. yml的优点
  6. yml中value的单双引号使用(双引号不转义)

spring boot有哪些配置文件 spring boot 配置文件_spring boot有哪些配置文件_25