Java properties 和 yml 的区别解析
作者:ζ◇十点半就睡觉 发布时间:2023-04-01 22:28:09
properties和yml的区别
这几天刚好看到Spring Boot当中有两种配置文件的方式,但是这两种配置方式有什么区别呢?
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
支持多种语言,通用性更好
① 定义和定位不同
properties
翻译成中文是“属性”的意思,所以它在创建之初,就是用来在Spring Boot当中设置属性的。yml
是YAML的缩写,它的全称是Yet Another Markup Language
,翻译成中文是“另一种标记语言”
二者从定义可以看出:它们的定位和层次是完全不同的,properties
只是用来配置一些属性的。而yml
的格局和期望更大,它的定位是”另一种标记语言“。所以这波格局上来说yml
是在天花板上了
② 语法不同
properties
和yml
的语法区别很大,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
:
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、等语言当中
作用:如果一个公司有不同语言的开发团队,并且使用了配置中心,那么这些不同语言的开发团队是不是就可以使用同一份配置文件了
⑤ 总结
properties
和yml
都是Spring Boot支持的两种配置文件,其中yml
格式的配置文件可以看做是对properties
配置文件的升级。它们的主要区别有4点:定义和定位不同、语法不同、yml
可以更好的配置多种数据类型、yml
可以跨语言使用
来源:https://blog.csdn.net/qq_63474430/article/details/129057883


猜你喜欢
- 背景之前我不想用注解来写启动框架,因为启动框架需要的参数太多了。将参数都定义在注解内和写一个task就没有本质上的差别,所以一直觉得没必要用
- 在Android控件View的文字周围添加图标,供大家参考,具体内容如下在控件TextView文字周围放置图片(基于TextView的But
- 一、Socket 基础知识1.1 Socket 概述Socket 指的是“插座”,是应用层与传输层之
- Android 添加系统设置属性的实现及步骤Android源码开发中,常常要用到一些全局标志或者说变量,这时候我们可以给android系统添
- 如何将ResultSet结果集遍历到List中今天在使用jstl标签展示查询结果时遇到一个小问题,即如何将ResultSet对象传递给前台页
- socket使用getInputStream()阻塞今天用socket进行编程练习时,发现程序到了getInputStream()这里就进行
- 本文实例讲述了Java构造代码块,静态代码块原理与用法。分享给大家供大家参考,具体如下:本文内容:局部代码块构造代码块静态代码块补充&nbs
- 问题描述在开发批量删除功能时,往往都是多条数据,所以前台需要传一个数组给后台,但是怎么在URL中绑定一个数组,同时在后台用@PathVari
- 动态 sql 简单来讲就是我们能通过条件的设置生成不同的 sql,MyBatis 中常用的动态 sql 表达式主要是有五种:ifchoose
- 用AndroidStudio编写高级计算器带三角函数对数运算功能界面效果图:layout布局 activity_jisuanqi.xml代码
- 本文实例讲述了Android开发实现的简单五子棋游戏。分享给大家供大家参考,具体如下:我刚刚在Android上写的一个五子棋的小程序,在这里
- 模块调用之后,记录模块的相关日志,看似简单,其实暗藏玄机。1.简述模块日志的实现方式大致有三种:AOP + 自定义注解实现输出指定格式日志
- JRebel 介绍IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目
- Swagger以及knife4j基本使用Swagger 介绍:官网:https://swagger.io/Swagger是一个规范和完整的框
- Spring相关的依赖导入进去,即可使用spring的定时任务!<!-- spring核心包 -->
- jcasbin简介:jcasbin 是一个用 Java 语言打造的轻量级开源访问控制框架https://github.com/casbin/
- 具体实现过程不多说了,直接贴代码了。using System;using System.Collections.Generic;using
- 1:Group的功能Group可以管理一组节点Group可以对管理的节点进行增删改查的操作Group可以管理节点的属性1.2:看看JDKSE
- 本文实例讲述了Java中的异常和处理机制。分享给大家供大家参考,具体如下:简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期
- 有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下,父类和子类的各种方法的执行顺序到底是什么,下面通过场景的举例来重新认识