Spring Boot——yml和properties详解

news2025/1/16 12:46:43

文章目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring @DateTimeFormat日期格式化时注解浅析分享

文章目录总结写前面为什么用怎么用场景一场景二场景三场景四场景五方式一方式二总结写前面 关于它 DateTimeFormat: 可以接收解析前端传入字符时间数据;不能格式化接收的字符时间类型数据,需要的转换格式得配置;入参格式必须与后…

罗丹明PEG羟基,RB-PEG-OH,Rhodamine-PEG-OH

产品名称:罗丹明PEG羟基 英文名称:RB-PEG-OH,Rhodamine-PEG-OH,Rhodamine PEG hydroxyl,RB-PEG-OH CAS:1030-000-8 结构式: 罗丹明吸收波长570 nm,发射波长约595 nm。罗丹明B可追踪粉红色和红…

Git——Git介绍及安装步骤

目录 一、Git概述:分布式版本控制工具 1.1 版本控制介绍 1.1.3为什么需要版本控制? 1.2 版本控制工具 1.2.1 集中式版本控制工具 1.2.2 分布式版本控制工具 1.3 工作机制和代码托管中心(远程库) 二、Git安装 2.1 官网下载安装…

用物理光学建模演示点阵投影仪的工作原理

摘要 点阵投影仪是启用Apple Face ID的关键组件。 该系统通常由发光单元阵列,透镜和分束光栅组成。 透镜系统与光栅一起投射,并复制阵列光源图案。 在此示例中,我们构建了这种点阵投影仪系统并演示了其工作原理。为进行系统分析,我…

[Java]枚举类

文章目录🍊 枚举类理解🍊 自定义枚举类🍊 使用 enum 关键字定义枚举类🍊 Enum类的常用方法🥭 toString()🥭 Enum.valueOf(Class enumClass, String name)🥭 valueOf(String name)🥭 …

艾美捷Bio-Helix BluPAD双LED蓝白光照胶台丨舒适、方便

艾美捷Bio-Helix BluPAD双LED蓝白光照胶台(切胶仪,透射仪),适用于各种生命科学研究领域,用于观察和分析核酸和蛋白质。鉴于其对凝胶切割、数据成像和归档等观察后应用的最优化和人性化设计,希望为研究人员提…

搭建包含swift组件的openstack云平台详解

由于今天做实验。。。 安装完成虚拟机仅主机模式和nat模式双网卡后,开启网卡进入界面直接ping百度,ping通直接执行下面操作 开启虚拟机,切换到root模式关闭防火墙 查看防火墙是否开启,如果开启请关闭(出现Active: ac…

广东的介绍

附录: 1、画图工具:https://www.ldmap.net/map.html?id97f83161-ce02-4e11-989b-fb6645469320 广东之地 因字幅有限,故先列举最端。 巧合点 分隔各地,却有相同的点,是否有相同的影响因素。广东最南,最…

免费搜题接口

免费搜题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳转&a…

[附源码]计算机毕业设计JAVA基于web鲜花销售系统论文2022

[附源码]计算机毕业设计JAVA基于web鲜花销售系统论文2022 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: …

企业数据集成难?Qlik 与微软助你事半功倍

微软年度峰会 Ignite 2022 落下帷幕,正式推出微软智能数据平台,统一微软旗下数据库、数据分析和管理服务,一个基于微软云合规、安全等优势、云端数据平台 开发服务为核心的生态系统初见雏形。 Qlik 作为微软金牌合作伙伴,其数据…

思考思维(2):《极简思考》结构化思维

前言 之前在架构师成长之路(5)--架构师具备的思维_hguisu的博客-CSDN博客_架构思维能力已经总结过了,这里再次全面总结。 有一种人的口头禅是“我只说三点”,这种人通常很厉害。 有人三句话说明白一件事,有人说半天别人也没听懂在说啥。这是…

SpringCloud微服务(五)——Config分布式配置中心

SpringCloud Config分布式配置中心 SpringCloud 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设…

继承和多态

文章目录继承为什么要继承继承的概念继承的语法父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法super关键字子类构造方法super和this再谈初始化protected关键字继承方式final关键字继承与组合多态多态的概念多态的实现条件重写向上转型和向下转型向上转型向下转…

GhostNetV2学习笔记

GhostNetV2学习笔记 GhostNetV2: Enhance Cheap Operation with Long-Range Attention Abstract 轻量级卷积神经网络(CNNs)是专为在移动设备上具有较快推理速度的应用而设计的。卷积运算只能捕获窗口区域的局部信息,这阻碍了性能的进一步提高。在卷积中引入自我注…

随时随地创建参数化3D模型—xDesign

在前文3DEXPERIENCE的文章里,我们给各位介绍了3DEXPERIENCE云平台的页面以及怎么点击到对应的平台角色和应用程序。 所以,接下来就给各位介绍云平台当中的应用程序的操作和使用方法。本篇文章主要介绍工程师们在工作中常要用到的3D建模的应用程xDesign&…

间隔一分钟按某个按键一次——VBS脚本

间隔一分钟按某个按键一次-VBS脚本 我们在玩游戏挂机的时候,有的时候长时间鼠标键盘不动一下,游戏就掉线了。或者居家办公出去做核酸检测,时间一长你的钉钉、企业微信等通讯工具就会显示离线状态,这个时候需要有个简易的小脚本帮…

第四章 决策树

4.1 基本流程 决策树是一类常见的机器学习方法。以二分类任务为例,其结构类似于二叉树。以西瓜问题为例,其结构如图所示: 一般的,一颗决策树包含一个根节点、若干个内部结点和若干个叶节点;叶节点对应决策结果&#…

全网最全斗音短视频新老账号起号技巧

大家好,我是我赢助手,专注于自媒体短视频去水印、去重和文案提取运营。 今天给大家分享下全网最全斗音短视频新老账号起号技巧 1、清理手机(手机登录新斗音号才需要清理) 安卓:打开设置-应用管理-斗音短视频-储存占用-清除缓存-卸载 双清方法:先在斗…

同花顺_代码解析_技术指标_Z_1

本文通过对同花顺中现成代码进行解析,用以了解同花顺相关策略设计的思想 目录 ZJ_01 ZJ_02 ZJ_05 ZMMZB ZNZ_ASR ZNZ_BYQD ZNZ_CBAND ZNZ_CBW ZNZ_CBXQD ZNZ_CKD ZNZ_CMACD ZNZ_CMGL ZNZ_CYBB ZJ_01 波段之星 "波段之星"指标为图形化指标。…