Spring Boot中yml和properties的区别

embedded/2025/1/18 0:43:39/

properties 和 yml 都是 Spring Boot 支持的两种配置文件,可以看作是 Spring Boot 在不同时期的两款“产品”。主要是为了取代 XML 文件格式来配置项目。

properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式,而 yml 可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。它们的主要区别有 4 点:定义和定位不同、语法不同:yml 的语法更简单,且可读性更高、yml 可以更好的配置多种数据类型,比如对象和集合、yml 可以跨语言使用,通用性更好。

区别:

  1. 定义和定位不同;
  2. 语法不同;
  3. yml 更好的配置多种数据类型;
  4. yml 支持多种语言、通用性更好。

定义和定位不同:

properties 是“属性”的意思,它在创建之初,就是用来在 Spring Boot 中设置属性的。
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language,中文是“另一种标记语言”。

所以从二者的定义可以看出:它们的定位和层次是完全不同的,properties 只是用来设置一些属性配置的,而 yml 的格局和愿景更大,它的定位是“另一种标记语言”,从格局上来讲 yml 就甩 properties 好几条街。

语法不同:

properties 配置文件的基本语法格式是“key=value”的形式。

java"># 配置项目启动端口号
server.port=8088
# 开启调试模式
debug=true
# 配置数据连接信息
spring.datasource.url=jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

yml 的基本语法格式是“key: value”的形式且冒号后面的空格是不能被省略的,否则项目启动会报错。

java"># 配置项目启动端口号
server:port: 9090
# 开启调试模式
debug: true
# 配置数据连接信息
spring:datasource:url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver

上述 properties 和 yml 配置数据库的连接信息可以看出,相比于 properties 来说,yml 的语法更简洁,并且可读性更高

yml 更好的配置多种数据类型

 

yml 除了可以很好的配置基础数据类型之外,它还可以很方便的配置对象、集合等数据类型。

配置对象数据类型:

java">user:id: 1name: Javaage: 18

使用行内写法配置对象类型(与上面的写法的效果一致)

java">user: {id: 1,name: Java,age: 18}

数组也有两种写法:

java">animal:- Dog- Cat
java">animal: [Dog, Cat]

yml 可以跨语言

properties 格式的配置文件只适用于 Spring Boot 项目,只适用于 Java 语言,而 yml 支持更多的开发语言,它可以用在 Java、PHP、Python、Ruby、JavaScript、Perl、Golang 等语言中。

作用:对于多个不同语言的开发团队,使用配置中心(在线配置文件)的前提下,这些不同语言的开发团队就可以使用同一份配置文件了,也方便后期的管理和维护


http://www.ppmy.cn/embedded/154807.html

相关文章

深度剖析:NLP 领域基于 TF-IDF 和 Text-Rank 的关键字提取原理

今天,我想写一篇自然语言处理领域两大关键词提取技术 TF-IDF 和 Text-Rank。这两项技术在文本处理的世界里犹如两颗璀璨的明星,各自散发着独特的光芒,帮助我们从海量的文本数据中精准地提炼出关键信息,无论是在学术研究、信息检索…

七十五:握手的优化:Session缓存、Ticket票据及TLS 1.3的0-RTT

引言 在现代互联网环境中,安全性和性能是设计网络协议时至关重要的两个方面。传输层安全性(TLS)协议是实现安全传输的关键机制。然而,传统的TLS握手过程虽然安全,但是存在潜在的延迟问题。为了优化握手的效率&#xf…

git 常用命令 git revert

git revert 是 Git 中用于撤销之前提交更改的命令。它通过创建一个新的提交来取消指定提交引入的更改,而不是直接修改历史记录。这使得 git revert 成为一种安全且非破坏性的撤销方式,特别适用于已经推送到远程仓库或被其他开发者依赖的提交。 git reve…

Ruby JSON 优化之路:性能提升的探索与实践

在 Ruby 编程的世界里,JSON 处理是一个至关重要的环节。今天,就来深入探讨一下 Ruby JSON 的优化过程,看看如何让它的性能更上一层楼。 一、批量 API 优化:解决哈希表构建效率问题 在之前的工作中,我们已经着手进行了…

【Vue3 入门到实战】3. ref 和 reactive区别和适用场景

目录 ​编辑 1. ref 部分 1.1 ref定义基本数据类型 1.2 ref 定义引用数据类型 2. reactive 函数 3. ref 和 reactive 对比 3.1 原理 3.2 区别 3.3 使用原则 在 Vue 3 中 ref 和 reactive 是用于创建响应式数据的两个核心函数。它们都属于 Composition API 的一部分&…

专题 - STM32

基础 基础知识 STM所有产品线(列举型号): STM产品的3内核架构(列举ARM芯片架构): STM32的3开发方式: STM32的5开发工具和套件: 若要在电脑上直接硬件级调试STM32设备,则…

mysql 与Redis 数据强一致方案

前言mysql与Redis能实现数据的强一致?分布式实现数据的强一致的方案是什么?mysql 与 Redis 能强一致吗?Redis 的事务不适合实现强一致那怎么办?(mysql 与Redis 有强一致方案吗?) 前言 mysql与Redis一般不会使用强一致性因为不仅设计复杂并且性能差(典型的吃力不讨好类型)…

使用 Vue.js 3 开发动态模块化组件:实现插件式表单系统

在现代前端开发中,模块化和可扩展性是开发复杂应用程序的核心目标。Vue.js 3 提供了很多强大的工具和功能,帮助我们实现这些目标。在本文中,我们将通过一个实际案例:构建动态模块化的插件式表单系统,深入了解如何高效利…