多年来,Java开发人员依赖于属性文件或xml文件来指定应用程序配置。在企业应用程序中,人们可以为每个环境(如开发,分段和生产)创建单独的文件,以定义相应环境的属性。但是,通过Spring引导,我们可以选择在单个“yml”文件中配置所有配置文件。

什么是YAML?

YAML是JSON的超集,因此这是一种非常方便的格式,用于指定分层配置数据。

YAML官网:它是所有编程语言的人性化数据序列化标准。

YAML更易读,对于开发人员的读/写配置文件是有好处的。

YAML设计目标

从YAML官方规范:

  1. YAML易于人类阅读。
  2. YAML数据在编程语言之间是可移植的。
  3. YAML匹配敏捷语言的本机数据结构。
  4. YAML具有一致的模型来支持通用工具。
  5. YAML支持单程处理。
  6. YAML具有表现力和可扩展性。
  7. YAML易于实施和使用。

我应该怎么考虑呢?

即使您的YAML文件不完整,也无法检测到它,但XML解析器始终检查格式良好的文档。

不要考虑:

YAML文件不考虑良好的序列化,而不像JSON,因为它是基于对象。

那么,XML呢?

XML主要是机器到机器的通信。

YAML文件示例:

environment:profiles: devname: Developer App url: http://dev.abc.comprofiles: qaname: QA App url: http://qa.abc.com

哪些Java YAML解析器可用?

有以下可用于Java的YAML解析器,

  1. SnakeYAML
  2. JYaml
  3. YamlBeans
  4. JvYaml

Spring Boot使用SnakeYAML库进行YAML支持。

SnakeYAML

Snakeyaml是Java虚拟机的YAML解析器和发射器。

官方网站:https://bitbucket.org/asomov/snakeyaml

SnakeYAML功能:

  • 一个完整的YAML 1.1解析器。具体来说,SnakeYAML可以解析规范中的所有示例。
  • Unicode支持包括UTF-8/UTF-16输入/输出。
  • 用于序列化和反序列化本机Java对象的高级API。
  • 支持YAML类型存储库中的所有类型  。
  • 相对敏感的错误信息。

所以...

关于YAML,在Spring Boot框架中如何支持读写呢?

是的,如果您的类路径中包含Snakeyaml库,则SpringApplication类将自动支持YAML作为属性文件的替代方法。

如果你在POM使用Starter,那么spring-boot-starter会自动加载yml文件(application.yml)

您可以在这里检查Spring-Boot-Starter。

如何在Spring Boot中加载?

YamlPropertiesFactoryBean将加载YAML做为Properties和YamlMapFactoryBean将加载YAML做为Map。

更多的请阅读:Spring Boot Doc

如何使用YamlPropertiesFactoryBean使用Spring Framework加载YAML文件?

从Spring框架4.1.0增加了对YAML的支持,Spring框架4.1.0 maven POM具有Snakeyaml依赖性  。

您可以在Spring Boot应用中使用两种方式加载YAML:

1、使用Java配置类

 @Beanpublic static PropertySourcesPlaceholderConfigurer properties() {PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();yaml.setResources(new ClassPathResource("appConfig.yml");propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());return propertySourcesPlaceholderConfigurer;}

2、使用XML Bean配置

<context:annotation-config/><bean id="yamlProperties" class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean"><property name="resources" value="classpath:appConfig.yml"/>
</bean><context:property-placeholder properties-ref="yamlProperties"/>

有没有YAML编辑器可用?

是的,现在Spring STS 3.7.0有Spring Boot YAML编辑器,它具有引导特定的内容辅助,验证,悬停信息和超链接检测器。它了解Spring Boot的配置元数据。

检查此链接以获取更多信息:STS 3.7.0 YAML编辑器。

Spring Boot YAML演示的例子?

如果你想了解spring启动yaml的工作原理,请参考这个例子来自GitHub的Spring-boot-yaml。

参考:

https://meetsnehal.wordpress.com/2015/09/12/yaml-an-alternative-to-properties-file-with-spring-boot/(以上内容翻译自此篇文章)

https://en.wikipedia.org/wiki/YAML

http://yaml.org/

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config html

https://stackoverflow.com/questions/39474133/spring-boot-using-yaml-instead-of-properties-file

转载于:https://www.cnblogs.com/EasonJim/p/7583837.html

YAML/Properties配置文件与Spring Boot(转)相关推荐

  1. SpringBoot解析yml/yaml/properties配置文件的四种方式汇总

    目录 一.配置文件注入方式一@Value 二.配置文件注入方式二@ConfigurationProperties 三.自定义解析类,直接暴力读取yml配置文件 四.Spring配置文件的解析类Envi ...

  2. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  3. Spring Boot 配置文件中的花样,看这一篇足矣!

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 关注我,回复口令获取可获取独家整理的学习资料: - 001 :领取<Spring Boot基础教 ...

  4. Java Spring Boot VS .NetCore (七) 配置文件

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  5. Spring Boot YAML配置

    在本快速教程中,我们将学习如何使用YAML文件来配置Spring Boot应用程序的属性. 什么是YAML文件? 除了可以在Spring中没有应用程序.properties之外 ,我们还可以使用app ...

  6. Spring Boot 2.x基础教程:配置文件详解

    在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring Boot给我们带来的诸多优点,我们用非常少的代码量就成功的实现了一个Web应用,这是传统的Spring应 ...

  7. Spring Boot (4)---配置文件详解

    Spring2.0 Boot配置文件详解 配置文件说明 Spring Boot 配置文件允许为同一套应用,为不同的环境用不同的配置文件.比如开发环境.测试环境.生成环境.你可以用 properties ...

  8. Spring Boot 快速入门(二)主配置文件、yml配置文件语法

    SpringBoot 的主配置文件 编辑器 Spring Boot 的主配置文件是 src/main/resources 中默认创建的 spring.properties 文件.该文件打开后是没有自动 ...

  9. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

最新文章

  1. 十六届智能车全向组硬件开源 | 上海海事大学全向行进组
  2. 【正则表达式】之Possessive Quantifiers
  3. 构建高并发高可用安全的IT系统-高并发部分
  4. [TJOI2015]线性代数(最小割)
  5. Diango博客--14.使用 Django 项目中的 ORM 编写伪造测试数据脚本
  6. 2018上半年软件设计师上午题参考答案
  7. 网站建设:部署与发布
  8. spring 优越性实践
  9. 一口气说出 6种 @Transactional 注解失效场景
  10. (19)FPGA脉冲计数器设计(第4天)
  11. FPGA实现按键消抖及短时间按键和长时间按键不同动作
  12. umask设置导致的weblogic中的应用上传的文件没有权限打开
  13. Ubuntu20.04如何解决QQ闪退问题(亲测有效)
  14. r语言clind函数_19 函数进阶 | R语言教程
  15. 基于MapGIS的GIS二次开发作业文档
  16. Windows 上路由、端口转发配置
  17. android补间动画有哪几种,android三种动画详解(补间动画、帧动画、属性动画)...
  18. Java程序员可以做哪些副业?
  19. 公司合伙人股权的进入和退出机制
  20. 苹果ipa安装包分发下载教程

热门文章

  1. LeetCode--Sum Root to Leaf Numbers
  2. PHP 遍历数组的方法汇总
  3. 行内元素中间出现空隙
  4. as3调用外部swf里的类的方法
  5. WPF窗体最小化到任务栏
  6. Forensic Challenge 9 - Mobile Malware
  7. Rust核心团队前成员Brian Anderson加入PingCAP
  8. 如何让tomcat服务器运行在80端口,并且无需输入项目名即可访问项目()
  9. [LeetCode]Basic Calculator
  10. Linux下Chromium使用flash的办法