yaml是专门用来写配置文件的语言。使用yaml来写配置文件扩展性比较强而且十分方便。spring boot支持使用yaml语言来写配置文件,使用snakeyaml库来读取配置文件。spring boot关于yaml详细用法可以参考官方文档

下面列举一些项目中常用的写法,帮你快速入门。

1 写yml文件的基本规则

a) 层级关系用缩进表示,相同的缩进表示的层级关系相同。

b) 缩进只能使用空格,不能使用tab键

例如在properties文件中有如下属性:

spring. profiles.active=test
spring. jackson.default-property-inclusion=non_default

在yml文件要写成这样:

spring:
profiles:
active: test
jackson:
default-property-inclusion: non_default

2 支持数组类型,数组成员前面加 -

city:
- 北京
- 上海
- 深圳
- 南京
- 重庆

3 一个yml文件中可以写多个配置文件,配置文件之间用 --分割

spring:
profiles:
active: test -- spring:
profiles: prod -- spring:
profiles: test

4 支持别名功能,可以先定义别名,再进行引用。使用& 定义别名,* 引用别名。

testDatabase: &testDatabase
username: test
password: test
driverClassName: com.mysql.jdbc.Driver
test-on-borrow: true
validation-query: SELECT 1 test:
datasource:
url: jdbc:mysql://10.50.10.100:3306/testdb?characterEncoding=utf-8
<<: *testDatabase

上面的代码等同于

testDatabase: &testDatabase
username: test
password: test
driverClassName: com.mysql.jdbc.Driver
test-on-borrow: true
validation-query: SELECT 1 test:
datasource:
url: jdbc:mysql://10.50.10.100:3306/testdb?characterEncoding=utf-8
username: test
password: test
driverClassName: com.mysql.jdbc.Driver
test-on-borrow: true
validation-query: SELECT 1

别名功能在有重复配置的情况下特别有用,可以直接引用,避免写重复的配置。项目中常常遇到要配置多个数据库的情况,一般除了url,用户名,密码,其他的配置都是一样的,利用别名就可以少写重复的配置,也便于后面维护。

注意别名功能只能在同一个配置文件生效。例如如上面所示,在prod文件中定义的别名不能在test文件中被引用。

5 引用变量,引用变量使用${},也可以引用数组的值。可以先定义一下相同的值,在需要的地方直接引用即可。

spring:
profiles:
active: test country: 中国 city:
- 北京
- 上海
- 深圳
- 南京
- 重庆
-- spring:
profiles: prod myCountry: ${country}
myCity: ${city[0]} -- spring:
profiles: test myCountry: ${country}
myCity: ${city[1]}

6 写长字符串,长字符串可以用"",在换行时使用 \

longStr: "abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefg\
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefg\
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefg"


作者:vasthua
链接:http://www.jianshu.com/p/e091df2ff1c4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在spring boot使用总结(九) 使用yaml语言来写配置文件的更多相关文章

  1. spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的?

    spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的? 消息中间件在解决异步处理,模块间解耦和,和高流量场景的削峰,等情况下有着很广泛的应用 . 本文将跟大家一起 ...

  2. Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)

    拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现, ...

  3. Spring Boot 系列(九)数据层-集成Spring-data-jpa

    实际开发中,不可避免地会对数据进行反复的增删改查操作,然而这部分工作是十分繁琐枯燥的.那么,随即而生的ORM框架就能很好的解决这个问题. 我们常用的ORM框架有:Hibernate.Mybatis.J ...

  4. 【Spring Boot学习之九】缓存支持

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.Spring Boot Cache以及整合EhCacheSpring从3.1开始定义了org.springfram ...

  5. Spring Boot 入门(九):集成Quartz定时任务

    本片文章续<Spring Boot 入门(八):集成RabbitMQ消息队列>,关于Quartz定时任务请参考<Quartz的基本使用之入门(2.3.0版本)> spring ...

  6. Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

    当大潮退去,才知道谁在裸泳..关注公众号[BAT的乌托邦]开启专栏式学习,拒绝浅尝辄止.本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈.MyBatis. ...

  7. Spring Boot 入门系列(二十五)读取配置文件的几种方式详解!

    在项目开发中经常会用到配置文件,之前介绍过Spring Boot 资源文件属性配置的方法,但是很多朋友反馈说介绍的不够详细全面.所以, 今天完整的分享Spring Boot读取配置文件的几种方式! S ...

  8. Spring Boot系列教程九:Spring boot集成Redis

    一.创建项目 项目名称为 “springboot_redis”,创建过程中勾选 “Web”,“Redis”,第一次创建Maven需要下载依赖包(耐心等待) 二.实现 properties配置文件中添加 ...

  9. Spring Boot教程(九)异步方法

    创建工程 在pom文件引入相关依赖: <dependency> <groupId>org.springframework.boot</groupId> <ar ...

随机推荐

  1. <fmt:formatDate> 标签,日期格式化问题(Day_24)

    一个时间显示问题,出生日期显示应为: yyyy-MM-dd,却显示: GMT格式(Wed Jun 15 00:00:00 CST 1983) 解决方案: 将图一改为图二. 图一: 图二: 最后: 注意 ...

  2. 【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus

    1.整合MyBatis-Plus背景 [分布式]-- 基于Nacos.OpenFeign搭建的微服务抽奖系统后台小案例 本篇是基于上一篇博文微服务抽奖系统后台对持久层MyBatis进行更换,并整合My ...

  3. GO学习-(23) Go语言操作MySQL + 强大的sqlx

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库. Go操作MySQL 连接 Go语言中的database/sql包提供了保证SQL或类SQL数据 ...

  4. 如何运行具有奇点的NGC深度学习容器

    如何运行具有奇点的NGC深度学习容器 How to Run NGC Deep Learning Containers with Singularity 高性能计算机和人工智能的融合使新的科学突破成为可 ...

  5. linux远程和软件包的管理

    远程管理 ssh   用户名@对方IP地址 -X   在本地可以运行对方的图形程序 端口 22 [root@room9pc01 ~]# ssh root@172.25.0.11 [root@serve ...

  6. 【VBA】一些判断

    判断是否为空: Sub 测试() If IsEmpty(Range("A100000")) Then Debug.Print "空的" End If End S ...

  7. 《CNN Image Retrieval in PyTorch: Training and evaluati-ng CNNs for Image Retrieval in PyTorch》代码思路解读

    这是一个基于微调卷积神经网络的图像检索的代码实现,这里我就基于代码做一个实现思路的个人解读,如果有不对的地方或者不够详细的地方,欢迎大家指出. 代码的GitHub地址:filipradenovic/c ...

  8. 学习响应式编程 Reactor (1) - 响应式编程

    响应式编程 命令式编程(Imperative Programing),是一种描述计算机所需做出的行为的编程范式.详细的命令机器怎么(How)去处理以达到想要的结果(What). 声明式编程(Decla ...

  9. 使用Go module和GoLand初始化一个Go项目

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 Golang是一门优秀的语言,特别是在并发编程上,得益于它的协程和channel等,非常方便易用.它通过go m ...

  10. SpringCloud Alibaba实战(7:nacos注册中心管理微服务)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经完成了Nacos Server的本地部署,这一节我们学习如何将Nac ...