携手创造,一起生长!这是我参加「日新方案 8 月更文应战」的第7天,点击查看活动概略
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 可以跨言语运用,通用性更好。
是非审之于己,毁誉听之于人,得失安之于数。
大众号:Java面试真题解析
面试合集:gitee.com/mydb/interv…