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


    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
    

    从上述配置文件可以看出: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
    

    从上述配置文件可以看出:yml 的基本语法格式是“key: value”的形式,且冒号后面的空格是不能被省略的,否则项目启动会报错:
    image.png
    从上述 properties 和 yml 配置数据库的连接信息可以看出,相比于 properties 来说,yml 的语法更简洁,并且可读性更高,它们的区别如下:
    image.png

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

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

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

    student:
      id: 1
      name: Java
      age: 18
    

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

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

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

    animal:
      - Dog
      - Cat
    

    或者使用行内写法:

    animal: [Dog, Cat]
    

    区别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

  • 相关阅读:
    替代STM32的GD32,替代KEIL的Eclipse配置---连载3
    Hazelcast系列(三):hazelcast集成(服务器/客户端)
    Rocket如何实现顺序消费
    车用尿素交易暴增丨化工出口ERP让业务管理更高效
    精彩东博会丨我委会员单位联通沃音乐打卡第五届中国—东盟信息港论坛:穿越元宇宙 沉浸新技术
    AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
    分享一个java+python双版本源码之基于微信小程序的校园跑腿接单系统 校园快递代领小程序(源码、lw、调试)
    从程序员成长为500强企业的架构师,如何掌控自己的职业生涯?
    【无标题】
    阿里云大数据专业认证(ACP),值得报名吗?
  • 原文地址:https://www.cnblogs.com/vipstone/p/16587027.html