Spring Boot——yml和properties详解

1. 配置文件作用

整个项目中所有重要的数据都是在配置文件中,比如:

  • 数据库的连接信息(包含用户名和密码的设置)
  • 项目的启动端口
  • 第三方系统的调用秘匙等信息
  • 用于发现和定位问题的普通日志和异常日志等

想象一下如果没有配置信息,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是十分重要的。

2. 配置文件的格式和分类

配置文件的分类:

  1. 系统的配置文件,比如连接字符串,比如日志相关设置,系统定义好的
  2. 用户自定义的

Spring Boot 配置文件主要分为以下两种格式:

  • .properties
  • .yml

创建 application.yml 配置文件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.1 规则(tips)

  1. 一个项目中可以存下两种配置文件(.properties.yml),但是不建议一个项目中出现两种配置文件

  2. 当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 .properties 为主

2.2 为配置文件安装提示插件

IDEA 社区版安装 Spring Assistant 插件之后,就可以正常创建 Spring Boot 项⽬了,并且 yml 的配置⽂件就有提示了。但默认情况下是不⽀持 properties 格式的⽇志提示的,这个时候需要安装了 Spring Tools 插件才会有相应的提示。

在这里插入图片描述

3. properties 配置文件说明

3.1 properties 基本语法

采用 key=value 形式,如:server.port=9090
tips:前后就不要加空格了,后面也不能加空格

在这里插入图片描述
properties 配置文件 内容(这只是我一般放在代码片段的,当然里面你可以写其他内容,这只是我个人的,但是这个语法格式,如下)

#配置数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/onliemusic?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=707703
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


#配置xml
mybatis.mapper-locations=classpath:mybatis/**Mapper.xml

#配置springboot上传文件的大小,默认每个文件的配置最大为15Mb,单次请求的文件的总数不能大于100Mb
spring.servlet.multipart.max-file-size = 15MB
spring.servlet.multipart.max-request-size=100MB

# 配置springboot日志调试模式是否开启
debug=true

# 设置打印日志的级别,及打印sql语句
#日志级别:trace,debug,info,warn,error
#基本日志
logging.level.root=INFO
logging.level.com.example.musicserver.mapper=debug

#扫描的包:druid.sql.Statement类和frank包
logging.level.druid.sql.Statement=DEBUG
logging.level.com.example=DEBUG

3.2 关于 properties 中文乱码的问题处理:

1.配置当前项目中文乱码问题:

在这里插入图片描述

2.配置新创建项目中文乱码问题:

在这里插入图片描述
3.将原来的 application.properties 删除掉,重新再创建一个 application.properties

因为之前的设置文件已经是不支持中文编码的文件格式设置编码再创建 application.properties 之后,所以后设置的编码不会改变原来旧的 application.properties文件,所以需要先将之前的配置文件删除掉重新创建

4. 读取 properties 配置文件

4.1 读取单个配置文件

通过 @Vaule 来读取配置文件,如图:

此时 properties 配置文件中只有个端口号,我们去读取它
在这里插入图片描述

在这里插入图片描述

读取结果:
在这里插入图片描述

5. yml 配置文件说明

yml 是一个可读性高,易于理解,用来表达数据库序列化的格式,它的语法和其他高级语言类似
yml 最大的优势是可以跨语言,不只是 Java 中可以使用, golang,python都可以使用 yml 配置文件

5.1 yml 基本语法

yml 是树形结构的配置文件,它的基础语法是“key: value”注意key和value之间使用英文冒号加空格的方式组成,其中的空格不可以省略

基础语法如下:

在这里插入图片描述

5.2 yml 特点

特点:

  1. 写法简单,可读性高
  2. 支持更多的数据类型
  3. 跨语言使用:Java/golong/高版本python

1.对于 properties 和 yml 配置文件中连接数据库操作来说,yml 的简便可以直接体现出来。如图:

properties配置文件中,连接数据库操作,需要没行都写spring.datasource.
在这里插入图片描述

而 yml 配置文件中就不需要:

在这里插入图片描述
2.yml 配置文件中 支持更多的数据类型

在这里插入图片描述

6. 读取 yml 配置文件

6.1 读取单个配置文件

这里 注意 此时 yml 配置文件当中 设置的端口号 是 9092!

在这里插入图片描述

在这里插入图片描述

当我们 按照 9092端口号 去访问的时候,发现 找不到!!

在这里插入图片描述

但是我们使用 properties 配置文件中的 端口号 会发现,就能够访问
在这里插入图片描述

当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 .properties 为主,

在这里插入图片描述

6.2 读取多个配置文件

6.3 yml 单双引号的问题

读取下图配置文件:
在这里插入图片描述

通过 @Value(“${ }”)读取配置文件

在这里插入图片描述
打印结果如图:

在这里插入图片描述

我们可以发现,单双引号打印的结果,和我们预期的结果不同:

在这里插入图片描述

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

就像上图,加了双引号 \n 就是换行,按照原语义执行,而 加了 单引号 和没加引号,则默认会将字符的特殊字符转义

6.4 yml 配置对象的读与写

我们还可以在 yml 中配置对象,如下配置:

student 为一个对象,对象中的属性分别为 id,name,age

在这里插入图片描述
这个时候就不能用 @Value 来读取配置中的对象了,此时要使用另外一个注解 @ConfigurationProperties 来读取,具体实现如下:

  1. 先创建一个实体类
    在这里插入图片描述
  2. 进行读取,因为我们在实体类中加入了五大注解,这里我们直接进行属性注入的方式,进行读取
    在这里插入图片描述
  3. 结果如下

在这里插入图片描述

如果我们要读取其他对象(student2),只需要将实体类中的 @ConfigurationProperties(prefix = “student”)中的 student 改成我们所需要读取的对象即可

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.4 yml 配置集合的读与写

yml 集合的写法,如图:

在这里插入图片描述

一般建议用第二种

yml 集合的读取:这里读取第二个配置文件dbtupes2(集合的名字随便取)

集合的读取和对象一样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

在这里插入图片描述

结果如图:

在这里插入图片描述

7. properties VS yml

  • properties 是以 key=value 的形式配置的键值类型的配置文件,而 yml 使用的是类似于 json 格式的树形配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “:” 英文冒号加空格的方式设置并且空格不可以省略
  • properties 为早期并且默认的配置文件格式,但其配置存在一定的冗余数据,使用 yml 可以更好的解决数据冗余问题
  • yml 通用性更好支持更多语言,如 Java,GO,Python等
  • yml 支持更多的数据类型

猜你喜欢

转载自blog.csdn.net/Biteht/article/details/127953337