萤火小屋

优律的知识库

  • 首页
  • 归档
  • 分类
  • 标签
  • 留言
  • 关于

  • 搜索
消息队列 RabbitMQ Redis 双指针 力扣 动态代理 Git YAML SpringBoot SpringMVC 回溯算法 分治算法 归并排序 快排 手撕 事务 MySQL索引 MySQL 小技巧 Spring Framework Spring 动态规划 Linux Android 贪心算法 操作系统 进程调度模拟 IPv6 数据库 计算机组成原理 计算机基础 栈 Java 静态路由 路由器 交换机 数字通信 网络工程 计算机网络 Web http 大学学习技巧 程序设计 算法

SpringBoot-Yaml配置文件

发表于 2021-12-14 | 分类于 Spring | 0 | 阅读次数 189

简介

yaml配置文件和properties配置文件一样都是Spring默认的配置文件,yaml配置文件全称为YAML Ain't Markup Language,以为yaml是(不是)一个标记语言,是不是很神奇?哈哈哈。
yaml是以数据为中心的配置文件,比json、xml等更适合做配置文件。同时它是通过节点进行分级配置。yaml配置文件的文件后缀名可以是yml也可以是yaml。

语法

缩进和写法

server:
    port: 8080
    name: happy
  1. yaml配置文件是以 Key: value 的形式进行书写的,请注意!Key和冒号之间没有空格,而冒号和value之间必须有一个空格。

  2. yaml配置文件的同级节点前的空格数量必须相同,相同的空格数表示当前节点是在同一级下,比如上边yaml的port和name是server的子节点,它们前面都有四个空格。

  3. ymal配置文件是大小写敏感的。

数据类型

yaml的数据类型有三种:字面量、对象(Map或键值对)和数组。

字面量

字面量即为 key: value 的形式来记录键对应的值。
值得注意的是,字符串默认不需要书写额外的双引号或单引号,双引号和单引号引用的字符串有特殊意义。
双引号:不会转义字符串里的转义字符,即 "zhangsan\tlisi" 打印出来就是 zhangsan\tlisi。
单引号:会转义字符串中的转义字符,即 "zhangsan\nlisi" 打印出来就是"zhangsan
lisi"。

对象、键值对(Map)

节点写法

对象的写法还可以以 key: value 的形式:

User:
    username: admin
    password: 123456

User对象在yaml文件中写法如上。我们在阅读时将User节点看作一个对象整体,它下边所有的节点均为它的字段。

行内写法

还以User对象为例,行内写法类似json但由不完全相同。

User: {username: admin, password: 123456}

数组

节点写法

数组中每个值前边加上“- ”,即短横线空格,例子如下。

Animal:
    - cat
    - pig
    - dog

行内写法

行内写法将数组每个元素用方括号括住。

Animal: [cat, pig, dog]

占位符

通过el表达式可以取到上文已经定义的值

server:
  port: 80
my:
  exp: 端口是${spring.port}

从配置文件节点my.exp读出来的值就是:“端口是80”。

在el表达式中通过冒号还可以指定默认值,即${spring.port:8080},当它取不到值的时候,可以默认其值是8080。

profile

当需要应用在多个环境有多套不同配置文件时,可以使用spring.profiles节点帮助我们切换多个配置文件。

image.png

新建多个application-${settingName}.yml文件来为多个环境进行配置。
在application.yml文件中通过spring.profiles.active来决定启动那个配置文件。

spring:
  profiles:
    # 启动开发环境的配置文件
    active: dev

(本节内容同样适用于properties文件)

文档块

通过---可以将一个yaml文件分成多份,然后通过spring.profiles来标识当前文档块是哪一个profile。在第一个文档块中通过spring.profiles.active来激活想使用的profile。

这有点类似将一个文件分成多个文件。

spring:
  profiles:
    # 使用开发环境配置
    active: dev
---
spring:
  profiles: prd
server:
  port: 8080
---
spring:
  profiles: dev
server:
  port: 8070
---
spring:
  profiles: test
server:
  port: 8071

程序启动参数决定配置文件

在启动应用时通过加上--spring.profiles.active=prd参数的方式可以决定使用那一份配置文件。

java -jar app.jar --spring.profiles.active=prd

通过命令行方法选择的配置文件优先级要高于文件中配置的方法。

虚拟机参数

可以通过虚拟机参数-Dspring.profiles.active=prd来指定使用的配置文件。

运行代码为:

java -jar -Dspring.profiles.active=prd app.jar

配置文件加载位置

SpringBoot加载配置文件的位置有四个,优先级从高到底分别为

  1. file:/config/
  2. file:/
  3. classpath:/config/
  4. classpath:/

即文件路径下的config文件夹优先级最高,类路径根目录下的配置文件优先级最低。SpringBoot会优先加载优先级高的配置文件,然后从高到底顺序加载配置,高优先级配置会覆盖低优先级的配置,形成互补配置。

通过程序启动参数spring.config.location=可以加载指定位置的配置文件,但原有路径的配置文件依然会被加载,形成互补配置。

# SpringBoot # YAML
SpringBoot学习笔记-自动装配浅析
SpringBoot学习日记-从配置文件中获取数据
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

83 日志
20 分类
44 标签
E-mail Twitter Instagram
Links
  • CZLisyx - 浮生志
  • Vedfolnir
0%
© 2019 — 2023 萤火小屋——优律的博客网站
网站已勉强运行 
Halo博客系统技术支持