Java properties 和 yml 的区别解析

properties和yml的区别

这几天刚好看到Spring Boot当中有两种配置文件的方式,但是这两种配置方式有什么区别呢?

propertiesyml都是Spring Boot支持的两种配置文件,它们可以看做Spring Boot在不同时期的两种“产品”。在Spring Boot时代已经不需要xml文件格式来配置文件了。取而代之的是propertiesyml文件

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

propertiesyml的区别主要体现在以下4点:

  • 定义和定位不同
  • 语法不同
  • yml更好的配置多种数据类型
  • yml支持多种语言,通用性更好

① 定义和定位不同

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

二者从定义可以看出:它们的定位和层次是完全不同的,properties只是用来配置一些属性的。而yml的格局和期望更大,它的定位是”另一种标记语言“。所以这波格局上来说yml是在天花板上了

② 语法不同

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

# 配置项目启动端口
server.port=8080
# 开启调试模式
debug=true
# 配置数据连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zy?characterEncoding=utf8&&useSSL=false
spring.datasource.name=root
spring.datasource.password=123456

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

# 配置项目启动端口
server:
  port: 8080
# 开启调试模式
debug: true
# 配置数据连接信息
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/zy?characterEncoding=utf8&&useSSL=false
    name: root
    password: 123456

yml格式有一个地方需要特别注意:冒号后面那个空格不能省略,否则程序会报错

properties:

Java properties 和 yml 的区别解析_第1张图片

yml:

Java properties 和 yml 的区别解析_第2张图片

从上述的对比可以看出,相比于properties来说,yml的语法更加简洁,并且可读性更高

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

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

yml中配置对象数据类型

student:
  id: 1
  name: zhangsan
  age: 18

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

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

yml当中配置数组也有两种写法:

animal:
  - dog
  - pig
  - cat
animal: [dog, pig]

④ yml可以跨语言

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

作用:如果一个公司有不同语言的开发团队,并且使用了配置中心,那么这些不同语言的开发团队是不是就可以使用同一份配置文件了

⑤ 总结

propertiesyml都是Spring Boot支持的两种配置文件,其中yml格式的配置文件可以看做是对properties配置文件的升级。它们的主要区别有4点:定义和定位不同、语法不同、yml可以更好的配置多种数据类型、yml可以跨语言使用

到此这篇关于Java properties 和 yml 的区别的文章就介绍到这了,更多相关Java properties 和 yml 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Java properties 和 yml 的区别解析)