Java properties 和 yml 的区别解析

作者:ζ◇十点半就睡觉 时间:2023-04-01 22:28:09 

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 的区别解析

yml:

Java properties 和 yml 的区别解析

从上述的对比可以看出,相比于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可以跨语言使用

来源:https://blog.csdn.net/qq_63474430/article/details/129057883

标签:Java,properties,yml
0
投稿

猜你喜欢

  • Java多线程之读写锁分离设计模式

    2021-06-08 07:20:48
  • springBoot+dubbo+zookeeper实现分布式开发应用的项目实践

    2021-11-22 02:03:25
  • Java中Map集合的常用方法详解

    2021-12-31 16:05:54
  • C#实现字符串倒序的写法

    2023-02-24 04:07:23
  • 使用@PropertySource读取配置文件通过@Value进行参数注入

    2021-11-21 13:21:03
  • android自定义倒计时控件示例

    2022-03-26 23:12:18
  • Android使用WindowManager构造悬浮view

    2022-08-03 00:43:13
  • Java中驼峰命名与下划线命名相互转换

    2021-10-01 00:56:47
  • C#实现将RTF转为HTML的示例代码

    2023-11-14 02:32:18
  • 详解Java使用Jsch与sftp服务器实现ssh免密登录

    2023-11-24 18:34:18
  • 实例讲解建立Android项目

    2023-10-04 17:41:20
  • Java实现的两个线程同时运行案例

    2023-05-14 09:10:40
  • 怎样使用PowerMockito 测试静态方法

    2022-06-18 08:28:59
  • Kotlin + Flow 实现Android 应用初始化任务启动库

    2023-05-23 12:58:28
  • Android ViewPager实现页面左右切换效果

    2022-12-28 04:49:35
  • Springboot笔记之热部署及不生效的解决方案

    2023-11-03 02:40:00
  • java客户端Jedis操作Redis Sentinel 连接池的实现方法

    2023-08-19 10:55:19
  • Android中ContextMenu用法实例

    2023-02-12 20:09:49
  • 利用Intellij Idea连接远程服务器实现远程上传部署功能

    2022-05-31 13:15:54
  • Java中的BaseTypeHandler自定义类型转换器的使用

    2022-03-09 00:34:16
  • asp之家 软件编程 m.aspxhome.com