YAML是一种简洁的非标记语言,以数据为中心,使用空白、缩进、分行组织数据,从而使得表示更加简洁易读。本文介绍下YAML的语法和SpringBoot读取该类型配置文件的过程。

本文目录

一、YAML基本语法二、YAML支持的数据格式三、读取yml配置文件四、测试

一、YAML基本语法

  1. 以缩进代表层级关系
  2. 缩进不能使用tab,只能用空格
  3. 空格个数不重要,但是同一层级必须左对齐
  4. 大小写敏感
  5. 数据格式为,名称:(空格)值
  6. 注释单行用#,只能注释单行

二、YAML支持的数据格式

  1. 字面量:数字、字符串、布尔等不可再分的值

字符串默认不需要加单引号或者双引号,如果加双引号,它不会转义字符串里面的特殊字符,而加单引号,则会转义字符串里面的特殊字符,意思就是将特殊字符直接变为字符串输出。

例子:

key1: 1
key2: true
  1. 对象:即为键值对,key= value

用冒号分隔键值对(Key: Value), Key需要顶格写,前面不能有空格,冒号后面需要有一个空格然后再跟值, 相同的缩进属于同一个map。

例子:

server:
  port: 8888
  servlet:
    context-path: /
  1. 数组:一组按顺序排列的值

用-来表示数组中的一个元素。

例子:

wechat:
  mp:
    configs:
    - appid: appid1
      secret: arr1_secret
      token: arr1_token
      aesKey: arr1_key
      msgDataFormat: JSON     - appid: appid2
      secret: arr2_secret
      token: arr2_token
      aesKey: arr2_key
      msgDataFormat: JSON

三、读取yml配置文件

新建一个spring boot项目spring-boot-encry,按照下面步骤操作。

  1. 新建配置文件

application.yml内容如下:

wechat:
  mp:
    configs:
    - appid: appid1
      secret: arr1_secret
      token: arr1_token
      aesKey: arr1_key
      msgDataFormat: JSON     - appid: appid2
      secret: arr2_secret
      token: arr2_token
      aesKey: arr2_key
      msgDataFormat: JSON
server:
  port: 8888
  servlet:
    context-path: /
  1. 添加配置文件对应的实体类

实体类添加注解,@ConfigurationProperties,@ConfigurationProperties注解可以自定义实体类,映射yml或者properties文件,自动为对象bean属性捆绑数据。

WxMpProperties代码如下:

@Data
@ConfigurationProperties(prefix = "wechat.mp")
public class WxMpProperties {     private List<MpConfig> configs;     @Data
    public static class MpConfig {
        /**
         * 设置微信公众号的appid
         */
        private String appId;         /**
         * 设置微信公众号的app secret
         */
        private String secret;         /**
         * 设置微信公众号的token
         */
        private String token;         /**
         * 设置微信公众号的EncodingAESKey
         */
        private String aesKey;
    }
}
  1. 添加controller

添加读取yml文件的controller,打印yml配置信息,代码如下:

/**
 * 读取yml文件的controller
 *
 * @Authro Java碎碎念
 */
@Slf4j
@RestController
public class TestReadYmlController {     @Value("${server.port}")
    private Integer port;     @Autowired
    private WxMpProperties wxMpProperties;     @RequestMapping("/readYml")
    public void readYml() {
        log.info("server.port=" + port);
        log.info("wxMpProperties=" + JSON.toJSONString(wxMpProperties));
    }
}

四、测试

打开浏览器访问:http://localhost:8888/readYml,可看到后台已经打印了yml配置文件里的信息,说明读取成功。

日志内容如下:

server.port=8888
wxMpProperties={"configs":[{"aesKey":"arr1_key","appId":"appid1","secret":"arr1_secret","token":"arr1_token"},{"aesKey":"arr2_key","appId":"appid2","secret":"arr2_secret","token":"arr2_token"}]}

到此SpringBoot读取yml配置文件功能已经全部实现,有问题欢迎留言沟通哦!

完整源码地址: https://github.com/suisui2019/springboot-study

点击文章底部”阅读原文“可以直达源码地址。

推荐阅读

1.SpringBoot中如何灵活的实现接口数据的加解密功能?
2.SpringBoot中神奇的@Enable*注解?
3.Java中Integer.parseInt和Integer.valueOf,你还傻傻分不清吗?
4.SpringCloud系列-整合Hystrix的两种方式
5.SpringCloud系列-利用Feign实现声明式服务调用


限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

Java碎碎念公众号

SpringBoot中如何优雅的读取yml配置文件?的更多相关文章

  1. SpringBoot中如何优雅的使用多线程

    SpringBoot中如何优雅的使用多线程 当异步方法有返回值时,如何获取异步方法执行的返回结果呢?这时需要异步调用的方法带有返回值CompletableFuture

  2. SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用

    一.前言 我们在开发中会经常遇到一些可能会变的值,比如数据库的密码,一些关键链接的配置等等. 都需要我们写在配置文件中,这样可以把这些配置文件放到nacos上进行管理,修改nacos的配置,咱们发布的 ...

  3. SpringBoot启动如何加载application.yml配置文件

    一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...

  4. JAVA读取yml配置文件指定key下的所有内容

    先引入需要的依赖 <!--读取yml文件--> <dependency> <groupId>org.yaml</groupId> <artifac ...

  5. Springboot 项目中 xml文件读取yml 配置文件

    <bean id="yamlProperties" class="org.springframework.beans.factory.config.YamlProp ...

  6. Springboot:属性常量赋值以及yml配置文件语法(四)

    方式一: 注解赋值 构建javaBean:com\springboot\vo\Dog 1:@Component:注册bean到spring容器中 2:添加get set toString方法 3:使用 ...

  7. SpringBoot中logback.xml使用application.yml中属性

    教你如何使用 springProfile 与 springProperty 让你的logback.xml 配置显得更有逼格,当别人还在苦苦挣扎弄logback-{profile}.xml的时候 你一个 ...

  8. IDEA启动springboot项目找不到application.yml配置文件

    idea启动项目时读取不到application-pro.yml文件,但是配置文件都在resource目录下: 解决:target/classes 目录是IDEA的classpath目录,项目编译后配 ...

  9. Springboot中修改.properties文件为.yml文件时项目不能运行问题

    可能很多小伙伴会考虑环境配置的问题,maven版本.idea版本什么的,其实没有必要 只要你之前.ies时能运行,那么环境配置就没有问题 不能运行的原因,一定是你的.yml文件的格式问题 .yml文件 ...

随机推荐

  1. TCP通信 -C/S中的Socket与ServerSocket

    客户端类:Socket类 TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器的数据,两次IO流 java.lang.Object 继承者 java.net.Socket 构造方法: ...

  2. win10下安装npm&cnpm步骤

    1.node官网下载安装包 2.分别输入node -v,npm -v检查是否完成 3.配置npm的全局模块的存放路径以及cache的路径,新建node_global和node_cache文件,以下是我 ...

  3. 基于Docker搭建大数据集群(七)Hbase部署

    基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cl ...

  4. javascript:history.go(-1)的使用

    1.问题描述 在微信项目开发中,比如常用联系人的增删改查操作中,比如跳入常用联系人管理页面,选中一个联系人修改它,就会跳入修改页面,修改完成后跳转到常用联系人管理页面,此时如果修改成功跳转采用的是页面 ...

  5. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  6. 3. Git与TortoiseGit基本操作

    1. GitHub操作 本节先简单介绍 git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(Check out ...), 更新 (U ...

  7. 43 道检验基础的 JavaScript 面试题

    导读 这两天的GitHub Trending repositories被一个名叫 javascript-questions的项目霸榜了,项目中记录了一些JavaScript题目. 文中有些点作者解释的 ...

  8. 版本控制之Git小结

    一.版本控制 1.1 什么是版本控制 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统.可以对任何类型的文件进行版本控制. 1.2 为什么需要版本控制 有了版本控制就可以 ...

  9. Redis系列总结--这几点你会了吗?

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 前面几篇已经对Redis中几个关键知识点做了介绍,本篇主要对Redis系列做一下总结以及对Redis中常见面试 ...

  10. 低效sql语句执行缓慢引起的大量占用服务器的CPU问题处理 (优化心得)

    1> 2> 3> 4> 5>删除不良的执行计划后执行时间仍然有150s,这实在是太慢了,继续查看原sql代码,发现父表的关联条件放在了子查询里,这是应该避免的 调整原sq ...