Spring Boot——yml和properties详解
创始人
2024-02-06 06:17:28

文章目录

  • 1. 配置文件作用
  • 2. 配置文件的格式和分类
    • 2.1 规则(tips)
    • 2.2 为配置文件安装提示插件
  • 3. properties 配置文件说明
    • 3.1 properties 基本语法
    • 3.2 关于 properties 中文乱码的问题处理:
  • 4. 读取 properties 配置文件
    • 4.1 读取单个配置文件
  • 5. yml 配置文件说明
    • 5.1 yml 基本语法
    • 5.2 yml 特点
  • 6. 读取 yml 配置文件
    • 6.1 读取单个配置文件
    • 6.2 读取多个配置文件
      • 6.3 yml 单双引号的问题
    • 6.4 yml 配置对象的读与写
    • 6.4 yml 配置集合的读与写
  • 7. properties VS yml

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 支持更多的数据类型

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...