YAML/Properties配置文件与Spring Boot(转)

YAML/Properties配置文件与Spring Boot(转)

大家好,又见面了,我是全栈君。

多年来,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: dev
    name: Developer App 
    url: http://dev.abc.com
    
    profiles: qa
    name: 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配置类

 @Bean
  public 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.0Spring 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

 

==>如有问题,请联系我:easonjim#163.com,或者下方发表评论。<==

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108139.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 原码,补码,二进制减法计算_二进制的原码和补码

    原码,补码,二进制减法计算_二进制的原码和补码这篇博客从一道题说起,已知x = (1&lt;&lt;31)-3,求x&amp;-x?这里面考察了二进制的减法,减法也就牵涉了原码补码的一些概念。这里进行下梳理。 一。原码,补码概念1.原码就是早期用来表示数字的一种方式。一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码例如:假设机器是32位系统,in…

    2022年9月25日
    2
  • phpStorm字体大小无法调整, 怎么办?

    phpStorm字体大小无法调整, 怎么办?

    2021年11月7日
    76
  • Landsat 9 数据详细介绍

    Landsat 9 数据详细介绍1.基本情况Landsat9号是Landsat系列中最新的一颗卫星,计划于2020年12月在加利福利亚范登堡空军基地加利福尼亚由AtlasV401火箭搭载进行发射,实际于于2021年9月27日发射,并已经开始采集第一批数据,2021年10月31日获取到遥感数据。Landsat9是继续Landsat系列对地球表面观测不可替代的记录。为了减少建造时间和观测缺口的风险,Landsat9在很大程度上复制了它的前身Landsat8。来源:原文链接…

    2022年7月23日
    44
  • 测试19

    测试19一、Linux必备知识linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有linux能力。二、Shell脚本掌握shell脚本,包括shell基础与应用、shell逻辑控

    2022年7月1日
    25
  • Java设计模式之创建型:单例模式

    Java设计模式之创建型:单例模式

    2021年10月4日
    47
  • C语言中open函数「建议收藏」

    C语言中open函数「建议收藏」作用:打开和创建文件。  简述:  #include  intopen(constchar*pathname,intoflag,…/*mode_tmode*/);  返回值:成功则返回文件描述符,否则返回-1  对于open函数来说,第三

    2022年5月25日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号