当前位置: 首页 > article >正文

Spring Boot中yml和properties的区别

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”的形式。

# 配置项目启动端口号
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”的形式且冒号后面的空格是不能被省略的,否则项目启动会报错。

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

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

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

 

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

配置对象数据类型:

user:
  id: 1
  name: Java
  age: 18

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

user: {id: 1,name: Java,age: 18}

数组也有两种写法:

animal:
  - Dog
  - Cat
animal: [Dog, Cat]

yml 可以跨语言

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

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


http://www.kler.cn/a/511057.html

相关文章:

  • 解决 多层跳板机情况下,ssh可以成功连但是VSCode失败
  • 软考中级复习篇章:数据结构部分的复习
  • Android设备:Linux远程gdb调试
  • llava 导入process报错
  • 国产编辑器EverEdit -重复行
  • 【RAG落地利器】向量数据库Qdrant使用教程
  • 进阶——第十六届蓝桥杯熟练度练习(串口)
  • rook-ceph云原生存储解决方案
  • 洗衣店订单|基于springboot+vue的洗衣店订单管理系统(源码+数据库+文档)
  • 【博客之星评选】2024年度前端学习总结
  • HTML练习-校园官网首页面
  • 医院管理系统小程序设计与实现(LW+源码+讲解)
  • 一文大白话讲清楚Node中间件
  • WPS数据分析000004
  • redis-排查命中率降低问题
  • 判断nginx的请求是否存在堆积
  • 深度学习基础--LSTM学习笔记(李沐《动手学习深度学习》)
  • JWT在线解密/JWT在线解码 - 加菲工具
  • 3.2 OpenAI 语言模型总览:GPT 系列的演进与应用解析
  • 精准测量,尽在掌握 —— 电导率传感器:科技之水质的守护者
  • ubuntu支持中文的字体
  • 【PowerQuery专栏】PowerQuery提取XML数据
  • Golang——常用库reflect和unsafe
  • 实施工程师:面试基础宝典
  • 【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-dio版本(31 /100)
  • QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能