• 面试突击74:properties和yml有什么区别?


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。

    properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式,而 yml 可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。

    properties 和 yml 的区别主要体现在以下 4 点:

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

    区别1:定义和定位不同

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

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

    区别2:语法不同

    properties 和 yml 语法区别很大,properties 配置文件的基本用法如下:

    # 配置项目启动端口号
    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    从上述配置文件可以看出:properties 的基本语法格式是“key=value”的形式,而 yml 的配置文件的基本用法如下:

    # 配置项目启动端口号
    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    从上述配置文件可以看出:yml 的基本语法格式是“key: value”的形式,且冒号后面的空格是不能被省略的,否则项目启动会报错:
    ![image.png](https://img-blog.csdnimg.cn/img_convert/1b04408e17f559aa3f6a4d1c82a0be4c.png#clientId=u02e0da23-fcb2-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=226&id=u805f9f56&margin=[object Object]&name=image.png&originHeight=451&originWidth=1627&originalType=binary&ratio=1&rotation=0&showTitle=false&size=62592&status=done&style=none&taskId=u8403a6f8-1df6-4032-8f1e-da8e355dec1&title=&width=813.5)
    从上述 properties 和 yml 配置数据库的连接信息可以看出,相比于 properties 来说,yml 的语法更简洁,并且可读性更高,它们的区别如下:
    ![image.png](https://img-blog.csdnimg.cn/img_convert/6401b7930725f00c9f2ba16cef301107.png#clientId=u02e0da23-fcb2-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=472&id=u1dfda225&margin=[object Object]&name=image.png&originHeight=944&originWidth=2035&originalType=binary&ratio=1&rotation=0&showTitle=false&size=123847&status=done&style=none&taskId=uc4c7f3d8-d53f-4711-85b9-a29f318941e&title=&width=1017.5)

    区别3:yml 更好的配置多种数据类型

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

    在 yml 中配置对象数据类型:

    student:
      id: 1
      name: Java
      age: 18
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    student: {id: 1,name: Java,age: 18}
    
    
    • 1
    • 2

    在 yml 中配置数组也有两种写法,可以这样写:

    animal:
      - Dog
      - Cat
    
    
    • 1
    • 2
    • 3
    • 4

    或者使用行内写法:

    animal: [Dog, Cat]
    
    
    • 1
    • 2

    区别4:yml 可以跨语言

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

    至于作用嘛?如果一个公司有多个不同语言的开发团队,并且使用了配置中心(在线配置文件)的前提下,那么这些不同语言的开发团队就可以使用同一份配置文件了,也方便后期的管理和维护。

    总结

    properties 和 yml 都是 Spring Boot 支持的两种配置文件,其中 yml 格式的配置文件可以看作是对 properties 配置文件的升级。它们的主要区别有 4 点:定义和定位不同、语法不同:yml 的语法更简单,且可读性更高、yml 可以更好的配置多种数据类型,比如对象和集合、yml 可以跨语言使用,通用性更好。

    是非审之于己,毁誉听之于人,得失安之于数。

    公众号:Java面试真题解析

    面试合集:https://gitee.com/mydb/interview

  • 相关阅读:
    unity 前后左右 移动
    asp毕业设计——基于asp+sqlserver的WEB社区论坛设计与实现(毕业论文+程序源码)——社区论坛
    【微信小程序怎么开店铺】微信小程序店铺怎么制作?
    Unity Shader实现UI流光效果
    supervisor的使用
    多目标优化算法matlab代码大合集
    机器人中的数值优化(十九)—— SOCP锥规划应用:时间最优路径参数化(TOPP)
    力扣373. 查找和最小的 K 对数字 优先队列法
    php冒泡算法实现倒序和正序排列
    cpu 性能分析基础
  • 原文地址:https://blog.csdn.net/u012804784/article/details/126344609