整个项目中所有重要的数据都是在配置文件中,比如:
想象一下如果没有配置信息,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是十分重要的。
配置文件的分类:
Spring Boot 配置文件主要分为以下两种格式:
创建 application.yml 配置文件



一个项目中可以存下两种配置文件(.properties 和 .yml),但是不建议一个项目中出现两种配置文件
当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 .properties 为主
IDEA 社区版安装 Spring Assistant 插件之后,就可以正常创建 Spring Boot 项⽬了,并且 yml 的配置⽂件就有提示了。但默认情况下是不⽀持 properties 格式的⽇志提示的,这个时候需要安装了 Spring Tools 插件才会有相应的提示。

采用 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
1.配置当前项目中文乱码问题:

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

3.将原来的 application.properties 删除掉,重新再创建一个 application.properties
因为之前的设置文件已经是不支持中文编码的文件格式,设置编码再创建 application.properties 之后,所以后设置的编码不会改变原来旧的 application.properties文件,所以需要先将之前的配置文件删除掉重新创建
通过 @Vaule 来读取配置文件,如图:
此时 properties 配置文件中只有个端口号,我们去读取它


读取结果:

yml 是一个可读性高,易于理解,用来表达数据库序列化的格式,它的语法和其他高级语言类似
yml 最大的优势是可以跨语言,不只是 Java 中可以使用, golang,python都可以使用 yml 配置文件
yml 是树形结构的配置文件,它的基础语法是
“key: value”,注意key和value之间使用英文冒号加空格的方式组成,其中的空格不可以省略
基础语法如下:

特点:
1.对于 properties 和 yml 配置文件中连接数据库操作来说,yml 的简便可以直接体现出来。如图:
properties配置文件中,连接数据库操作,需要没行都写spring.datasource.

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

2.yml 配置文件中 支持更多的数据类型

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


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

但是我们使用 properties 配置文件中的 端口号 会发现,就能够访问

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

读取下图配置文件:

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

打印结果如图:

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

结论:yml 中如果使用了 双引号就会按照(原)语义执行,如果不加单,双引号,或者加了单引号,那么默认会将字符串的特殊字符进行转义,比如 \n - > \ \ n (转义处理)
就像上图,加了双引号 \n 就是换行,按照原语义执行,而 加了 单引号 和没加引号,则默认会将字符的特殊字符转义
我们还可以在 yml 中配置对象,如下配置:
student 为一个对象,对象中的属性分别为 id,name,age

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



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



yml 集合的写法,如图:

一般建议用第二种
yml 集合的读取:这里读取第二个配置文件dbtupes2(集合的名字随便取)
集合的读取和对象一样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

结果如图:

properties 是以 key=value 的形式配置的键值类型的配置文件,而 yml 使用的是类似于 json 格式的树形配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “:” 英文冒号加空格的方式设置,并且空格不可以省略yml 通用性更好,支持更多语言,如 Java,GO,Python等yml 支持更多的数据类型