一。先附一个yml文件的解析步骤

1.Maven依赖

  <dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>1.10</version></dependency>

2.yml文件

name: hha
age: 60
friend:- good- easy- bug
params:addr: ZZcode: EE
name: 洗洗

3.实体类

package com.my.last;import java.util.List;
import java.util.Map;public class Student {private String name;private int age;private List<String> friend ;private Map<String, Object> params;/*** @return the name*/public String getName() {return name;}/*** @param name the name to set*/public void setName(String name) {this.name = name;}/*** @return the age*/public int getAge() {return age;}/*** @param age the age to set*/public void setAge(int age) {this.age = age;}/*** @return the friend*/public List<String> getFriend() {return friend;}/*** @param friend the friend to set*/public void setFriend(List<String> friend) {this.friend = friend;}/*** @return the params*/public Map<String, Object> getParams() {return params;}/*** @param params the params to set*/public void setParams(Map<String, Object> params) {this.params = params;}/* (non-Javadoc)* @see java.lang.Object#toString()*/@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", friend=" + friend + ", params=" + params + "]";}  }

4.测试类

package com.my.last;import org.yaml.snakeyaml.Yaml;public class Test {public static void main(String[] args) {Yaml yaml = new Yaml();Student student = yaml.loadAs(Test.class.getResourceAsStream("/test.yml"), Student.class);System.out.println(student);}}

 或者依赖 

<dependency><groupId>org.jyaml</groupId><artifactId>jyaml</artifactId><version>1.3</version></dependency>

解析方法:

        Student student2 = null;try {student2 = org.ho.yaml.Yaml.loadType(Test.class.getResourceAsStream("/test.yml"), Student.class);} catch (FileNotFoundException e) {// TODO Auto-generated catch block
            e.printStackTrace();}System.out.println(student2);

二.二者区别

在于其拥有天然的树状结构,所以着手尝试将properties文件更改为yml文件,发现了几个要注意的地方:
1、在properties文件中是以”.”进行分割的, 在yml中是用”:”进行分割;
2、yml的数据格式和json的格式很像,都是K-V格式,并且通过”:”进行赋值;
3、在yml中缩进一定不能使用TAB,否则会报很奇怪的错误;(缩进特么只能用空格!!!!)
4、yml每个k的冒号后面一定都要加一个空格;
5、使用spring cloud的maven进行构造的项目,在把properties换成yml后,一定要进行mvn clean insatll

6、yml是跨语言的:可以在包括JAVA,go,python等大量的语言中使用,比如做云计算使用go和java的时候,可以通过配置中心使用同一份配置!

7、支持列表:区别于properties只支持键值对数据,yml配置文件支持列表,如下所示:

当然,从properties转yml文件会遇到很多坑,在此记录下:

1,层级关系缩进不能用tab键:每次都数2.4.6这样打空格。。。

2,每个key的后面需要加:,每个:后面还需要加一个空格!

3,列表的短横线后面需要有个空格。

两个关键点:

第一个是yml是支持中文内容的,properties想使用中文只能用unicode编码

第二个是顺序问题,properties是不保证加载顺序的,yml有先后顺序,实际用例比如springcloud的zuul网关路由配置,如果一个uri同时满足两个匹配规则,properties你是不知道它到底使用了哪个规则的,而yml则一定是使用了靠的那个路由规则

Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable , key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。

总有时候会有关心顺序一致的需求,恰如有 org.apache.commons.collections.OrderdMap(其实用 LinkedHashMap 就是保证顺序) 一样,我们也想要有个 OrderdProperties。

详见: https://blog.csdn.net/qq1169091731/article/details/53012071

三。Spring Boot中application.properties和application.yml加载顺序

使用@PropertySource注解加载自定义配置文件,该注解无法加载yml配置文件。使用@Value注解获得文件中的参数值

application.properties和application.yml文件可以放在一下四个位置:

  • 外置,在相对于应用程序运行目录的/congfig子目录里。
  • 外置,在应用程序运行的目录里
  • 内置,在config包内
  • 内置,在Classpath根目录

同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:

此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.properties里面的属性就会覆盖里application.yml的属性

详见:https://www.cnblogs.com/lukelook/p/10583003.html

转载于:https://www.cnblogs.com/lukelook/p/11245832.html

SpringBoot properties和yml的区别相关推荐

  1. springboot的application.properties与.yml的区别

    现在我们的application.properties文件内容是: [plain] view plain copy     server.port=8090 server.session-timeou ...

  2. Springboot .properties或.yml配置文件读取pom.xml文件值

    有时候配置文件需要读取pom文件配置<properties></properties>中间自定义属性值的时候可以用@@获取 例:@package.parameter@ 然后还需 ...

  3. springboot配置文件(.yml)中自定义属性值并在controller里面获取

    1,由于项目需要,学习了新的框架--springboot,顺便练习一下在.yml中配置自定义属性并在controller里面获取.(以下的Springboot框架我已经搭建好,就不在陈述) 2,spr ...

  4. SpringBoot 项目中 YML 配置文件的使用

    本篇文章用于总结 YML 配置文件的使用,如果错误之处,请批评指正,希望观众老爷们多多支持! 1. 概述 YML 是什么? YML (YAML Aint't a Martup Language) YA ...

  5. Spring Boot properties和yml

    概念介绍 properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款"产品".在 Spring B ...

  6. springboot引入外部yml配置文件

    本文记录下springboot引入外部yml配置文件 文章目录 概述 本文小结 概述 如果不想把所有的配置都写在application.yml文件中,把它拆分成多个yml文件,并在applicatio ...

  7. springboot开发(yml配置和注解解析)

    so easy!第一个版本开发完了.需要进阶组件集成了. ​ 微服务的概念及时组件即服务,服务即接口,接口也是服务.组件调用使用restful,编码风格其实也是restful风格,接下来,我们项目开发 ...

  8. Eclipse properties.config.yml 配置文件中文编码问题。Eclipse 配置文件插件解决方案

    Eclipse properties.config.yml 配置文件中文编码问题.Eclipse 配置文件插件解决方案 参考文章: (1)Eclipse properties.config.yml 配 ...

  9. SpringBoot第 5 讲:SpringBoot+properties配置文件读取

    一.创建Maven项目 参考:SpringBoot第 1 讲:HelloWorld_秦毅翔的专栏-CSDN博客 二.修改pom.xml pom.xml中只需要添加springboot依赖即可 < ...

  10. maven 不编译jasper文件_第一个SpringBoot项目、核心配置文件properties(yml、yaml)、集成jsp...

    SpringBoot简介及国内关注度 SpringBoot简介: 它用来简化 Spring 应用程序的创建和开发过程,也可以说 Spring Boot 能简化我们之前采用 SpringMVC +Spr ...

最新文章

  1. 计算机论专业文范文,电脑论文范文例文 关于电脑和栏方面毕业论文范文30000字...
  2. 什么是机器人底盘 答案在这里!
  3. Pyqt5 获取命令行参数sys.argv
  4. Java编程思想笔记(持有对象)
  5. hibernate的Transaction接口理解
  6. 攻防世界-web-ics-07-从0到1的解题历程writeup
  7. 50个Servlet面试问答
  8. LeetCode刷题(7)
  9. 协同过滤Collaborative Filtering
  10. Python pip安装报错及解决办法:is not a supported wheel on this platform
  11. Mybatis教程-实战
  12. 【全网最新最全28套】Java毕业设计项目合集_轻松完成毕设_Java实战项目/Java练手项目
  13. 利用python批量查询企业信息_python批量查询百度收录
  14. python把数据生成图表_python从Oracle读取数据生成图表
  15. DOM以及DOM事件的处理方式
  16. 前端效果 -- 实现折叠、展开动画效果
  17. java 计算日期相差天数_Java 计算两个日期相差的天数
  18. 02 QEMU默认支持的所有开发板、芯片列表
  19. word2016在方块里打勾
  20. php如何动态为input赋值,input动态赋值后怎么触发change事件

热门文章

  1. 转帖“爸爸请您不要再去买股票了”
  2. 苹果mac文档处理工具:microsoftword
  3. 鼠标功能不全?这几款鼠标增强辅助工具Mac App不能错过
  4. 如何在 iPhone 和 iPad 上关闭 Spotlight 建议?
  5. MAMP Pro for Mac(PHP/MySQL开发环境)
  6. Theine for Mac(电脑休眠工具)
  7. 新手教程:Mac电脑如何设置自动隐藏菜单栏?
  8. 从虚拟化到软件定义--重新定义IT产业格局
  9. 回车跳到下一个EDIT
  10. uva 10308 Roads in the North