【JavaEE & Spring】SpringBoot 配置文件

SpringBoot 配置文件

  • 1. 配置文件的作用
    • 1.1 配置文件的说明
    • 1.2 SpringBoot 配置文件
  • 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.1 yml 配置读取
        • 4.2.1.2 注意事项:value 值加单双引号
      • 4.2.2 配置对象
      • 4.2.3 配置集合
      • 4.2.4 配置Map
    • 4.3 yml优缺点
  • 5. 综合训练 -- 验证码练习
  • 6. 总结

1. 配置文件的作用

1.1 配置文件的说明

  • 计算机上有数以千计的配置文件, 使用软件和硬件等都需要有配置文件,在C盘中存在;
  • 配置文件主要是为了解决硬编码带来的问题,把可能发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。

1.2 SpringBoot 配置文件

SpringBoot 支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到SpringBoot的目的。

很多项目或者框架的配置信息也放在配置文件中,比如:

  • 项目的启动端口
  • 数据库的连接信息(包含用户名和密码的设置)

2. 配置文件的格式

SpringBoot 配置文件有以下三种格式:

  • application.properties
  • application.yml
  • application.yaml

当应⽤程序启动时, Spring Boot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml ⽂件.
【JavaEE & Spring】SpringBoot 配置文件_第1张图片

特殊说明

  1. 理论上讲,.properties 和 .yml 可以并存在于一个项目中, 当 .properties 和 .yml 并存时, 两个配置都会加载。如果配置文件内容有冲突,则以 .properties 为主,也就是 properties 优先级高;
  2. 虽然理论上来讲, .properties 可以 和 .yml 共存, 但实际的业务当中, 我们通常会采取一种同一个配置文件格式, 这样可以更好的维护;

3. properties 配置文件说明

properties 配置文件是最早期的配置文件格式, 也是创建 SpringBoot 项目默认的配置文件~

3.1 properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
【JavaEE & Spring】SpringBoot 配置文件_第2张图片
SpringBoot配置文件官网

3.2 读取配置文件

  • 如果在项目中想要主动读取配置文件的内容, 可以使用 @Value 注解使用 "${}"的格式来读取,例如:
    【JavaEE & Spring】SpringBoot 配置文件_第3张图片
    【运行结果如下】
    【JavaEE & Spring】SpringBoot 配置文件_第4张图片

3.3 properties 缺点分析

properties 配置是以 key-value 的形式配置的,如下图所⽰:
【JavaEE & Spring】SpringBoot 配置文件_第5张图片
从上述配置key看出,properties 配置⽂件中会有很多的冗余的信息,⽐如这些:【JavaEE & Spring】SpringBoot 配置文件_第6张图片
想要解决这个问题,就可以使⽤ yml 配置⽂件的格式化了.

4. yml 配置文件说明

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔

4.1 yml 的基本语法

yml 是树形结构的配置⽂件,它的基础语法是"key: value".
key 和 value 之间使⽤英⽂冒号加空格的⽅式组成空格不可省略
基础语法如下:
【JavaEE & Spring】SpringBoot 配置文件_第7张图片

第⼀项的配置为正确的,key 也是⾼亮显⽰的. 第⼆项没有空格是错误的使⽤⽅式,第⼆项的 key 也没有⾼亮显⽰

使⽤ yml 连接数据库
【JavaEE & Spring】SpringBoot 配置文件_第8张图片
yml 和 properties 连接数据库的配置对⽐
【JavaEE & Spring】SpringBoot 配置文件_第9张图片

4.2 yml 使⽤进阶

4.2.1 yml 配置不同数据类型及 null

【JavaEE & Spring】SpringBoot 配置文件_第10张图片

4.2.1.1 yml 配置读取

yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可,实现代码如下:
【JavaEE & Spring】SpringBoot 配置文件_第11张图片
【JavaEE & Spring】SpringBoot 配置文件_第12张图片

4.2.1.2 注意事项:value 值加单双引号

字符串默认不⽤加上单引号或者双引号,如果加英⽂的单双引号可以表⽰特殊的含义。尝试在 application.yml 中配置如下信息:
【JavaEE & Spring】SpringBoot 配置文件_第13张图片
【JavaEE & Spring】SpringBoot 配置文件_第14张图片
以上程序的执⾏结果如下图所⽰:
【JavaEE & Spring】SpringBoot 配置文件_第15张图片
从上述结果可以看出:

  • 字符串默认不用加上单引号或者双引号。
  • 单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串
  • 双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义

4.2.2 配置对象

我们还可以在 yml 中配置对象,如下配置:
【JavaEE & Spring】SpringBoot 配置文件_第16张图片
这个时候就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解
@ConfigurationProperties 来读取,具体实现如下:
【JavaEE & Spring】SpringBoot 配置文件_第17张图片
【方法调用类】
【JavaEE & Spring】SpringBoot 配置文件_第18张图片
【JavaEE & Spring】SpringBoot 配置文件_第19张图片

4.2.3 配置集合

配置⽂件也可以配置 list 集合,如下所⽰:
【JavaEE & Spring】SpringBoot 配置文件_第20张图片
【JavaEE & Spring】SpringBoot 配置文件_第21张图片
【调用类】
【JavaEE & Spring】SpringBoot 配置文件_第22张图片
【JavaEE & Spring】SpringBoot 配置文件_第23张图片

4.2.4 配置Map

配置⽂件也可以配置 map,如下所⽰:
【JavaEE & Spring】SpringBoot 配置文件_第24张图片
【JavaEE & Spring】SpringBoot 配置文件_第25张图片
【调用类】
【JavaEE & Spring】SpringBoot 配置文件_第26张图片
【JavaEE & Spring】SpringBoot 配置文件_第27张图片

4.3 yml优缺点

  • 优点

    1. 可读性高,写法简单,易于理解
    2. 支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态。
    3. 支持更多的编程语言,不止是Java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用
  • 缺点:

    1. 不适合写复杂的配置⽂件
      【JavaEE & Spring】SpringBoot 配置文件_第28张图片
    2. 对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

5. 综合训练 – 验证码练习

代码仓库

6. 总结

  1. properties 是以 key = value 的形式配置的键值类型的配置文件, yml 使用的是树形配置方式.
  2. 读取配置文件内容, 使用 @value 注解, 注解内使用 “${}” 的格式读取.
  3. yml 层级之间使用换行缩进的方式配置, key 和 value 之间使用 “:”(英文冒号) 加空格的方式设置, 并且空格不可省略.
  4. properties 为早期并且默认的配置文件格式, 其配置存在一定的冗余数据, 使用 yml 可以很好的解决冗余的问题, 但不适合复杂配置.
  5. yml 可以和 properties 共存, 但一个项目中建议使用一种配置类型文件.

你可能感兴趣的:(#,Java,spring,boot,spring,java-ee)