乐趣区

关于前端:面试突击74properties和yml有什么区别

properties 和 yml 都是 Spring Boot 反对的两种配置文件,它们能够看作是 Spring Boot 在不同期间的两款“产品”。在 Spring Boot 时代曾经不须要应用 XML 文件格式来配置我的项目了,取而代之的是 properties 或 yml 文件。

properties 配置文件属于晚期,也是目前创立 Spring Boot(2.x)我的项目时默认的配置文件格式,而 yml 能够看做是对 properties 配置文件的降级,属于 Spring Boot 的“新版”配置文件。

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

定义和定位不同;
语法不同;
yml 更好的配置多种数据类型;
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”的模式,且冒号前面的空格是不能被省略的,否则我的项目启动会报错:

从上述 properties 和 yml 配置数据库的连贯信息能够看出,相比于 properties 来说,yml 的语法更简洁,并且可读性更高,它们的区别如下:
区别 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 能够跨语言应用,通用性更好。

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

退出移动版