SpringBoot配置文件之Yml语法
一 使用 YAML 而不是 Properties
YAML是 JSON 的超集,因此,它是用于指定分层配置数据的便捷格式。只要 class 路径上有SnakeYAML library,SpringApplication class 就会自动支持 YAML 作为 properties 的替代。
如果使用“Starters”,则
spring-boot-starter会自动提供 SnakeYAML。
1.1、加载 YAML
Spring Framework 提供了两个方便的 classes,可用于加载 YAML 文档。 YamlPropertiesFactoryBean将 YAML 加载为Properties,YamlMapFactoryBean将 YAML 加载为Map。
对于 example,请考虑以下 YAML 文档:
environments:
dev:
url: http://dev.example.com
name: Developer Setup
prod:
url: http://another.example.com
name: My Cool App
前面的 example 将转换为以下 properties:
environments.dev.url=http://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=http://another.example.com
environments.prod.name=My Cool App
YAML lists 用dereferencers 表示为 property 键。例如,请考虑以下 YAML:
my:
servers:
- dev.example.com
- another.example.com
前面的 example 将转换为这些 properties:
my.servers[0]=dev.example.com
my.servers[1]=another.example.com
要使用 Spring Boot 的Binder实用程序(这是@ConfigurationProperties所做的)绑定到 properties,你需要在java.util.List(或Set)类型的目标 bean 中有一个 property,你需要提供一个 setter 或者用一个 setter 初始化它。可变值。对于 example,以下 example 绑定到前面显示的 properties:
@ConfigurationProperties(prefix="my")
public class Config {
private List<String> servers = new ArrayList<String>();
public List<String> getServers() {
return this.servers;
}
}
1.2、在 Spring 环境中将 YAML 公开为 Properties
YamlPropertySourceLoader class 可用于在 Spring Environment中将 YAML 公开为PropertySource。这样做可以使用@Value annotation 和占位符语法来访问 YAML properties。
1.3、YAML 文件
您可以使用spring.profiles key 在单个文件中指定多个 profile-specific YAML 文档,以指示文档何时适用,如下面的示例所示:
server:
address: 192.168.1.100
---
spring:
profiles: development
server:
address: 127.0.0.1
---
spring:
profiles: production & eu-central
server:
address: 192.168.1.120
在前面的 example 中,如果development profile 是 active,则server.address property 是127.0.0.1。同样,如果production 和eu-central profiles 是 active,则server.address property 是192.168.1.120。如果未启用development,production和eu-central profiles,则 property 的 value 为192.168.1.100。
因此,
spring.profiles可以包含一个简单的 profile name(用于 exampleproduction)或 profile 表达式。对于 exampleproduction & (eu-central | eu-west),profile 表达式允许表达更复杂的 profile 逻辑。检查参考指南以获取更多详细信息。
如果 application context 启动时 none 显式为 active,则会激活默认的 profiles。因此,在下面的 YAML 中,我们在“默认”profile 中为spring.security.user.password设置了一个只有的值:
server:
port: 8000
---
spring:
profiles: default
security:
user:
password: weak
然而,在下面的示例中,始终设置密码,因为它没有附加到任何 profile,并且必须在必要时在所有其他 profiles 中显式重置:
server:
port: 8000
spring:
security:
user:
password: weak
使用spring.profiles元素指定的 Spring profiles 可以选择使用!字符否定。如果为单个文档指定了否定和 non-negated profiles,则至少一个 non-negated profile 必须 match,并且没有否定 profiles 可能 match。
1.4、YAML 缺点
无法使用@PropertySource annotation 加载 YAML files。因此,如果您需要以这种方式加载值,则需要使用 properties 文件。
二 YAML语法:
2.1、基本语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也是大小写敏感;
2.2、值的写法
字面量:普通的值(数字,字符串,布尔)
k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
数组(List、Set):
用- 值表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法
pets: [cat,dog,pig]
SpringBoot配置文件之Yml语法的更多相关文章
- springboot配置文件之yml的语法学习
springboot配置文件(.yml/.yaml.properties) YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语 ...
- 3 - 简单了解一下springboot中的yml语法 和 使用yml赋值
1.简单了解yml语法 2.使用yml给实体类赋值 准备工作:导入依赖 <!-- 这个jar包就是为了实体类中使用@ConfigurationProperties(prefix = " ...
- 【yml】springboot 配置类 yml语法
参考:https://www.runoob.com/w3cnote/yaml-intro.html YAML 是 "YAML Ain't a Markup Language"(YA ...
- springboot配置文件(.yml)中自定义属性值并在controller里面获取
1,由于项目需要,学习了新的框架--springboot,顺便练习一下在.yml中配置自定义属性并在controller里面获取.(以下的Springboot框架我已经搭建好,就不在陈述) 2,spr ...
- SpringBoot学习笔记(三)——Springboot配置文件
SpringBoot不像之前用spring+springMVC做项目的时候,他不需要配置大量的看上去很乱很复杂的xml配置文件.在SpringBoot中你可以通过java代码和注解配置项目,也可以通过 ...
- SpringBoot 配置文件存放位置及读取顺序
SpringBoot配置文件可以使用yml格式和properties格式 分别的默认命名为:application.yml.application.properties 存放目录 SpringBoot ...
- [SpringBoot] - 配置文件的多种形式及JSR303数据校验
Springboot配置文件: application.yml application.properties(自带) yml的格式写起来稍微舒服一点 在application.properties ...
- SpringBoot配置(1) 配置文件application&yml
SpringBoot配置(1) 配置文件application&yml 一.配置文件 1.1 配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的. application ...
- springboot的yaml基础语法与取值,配置类,配置文件加载优先级
1.基本语法k:(空格)v:表示一对键值对(一个空格必须有):以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的属性和值也是大小写敏感: server: port: 8081 pat ...
随机推荐
- ps 将图片四角变成圆角
1.用PS打开一张图片,用矩形选框工具,选出你要保留的的那一部分,“选择→修改→平滑”.在弹出的选框里添入数值,值越大角就越圆. 2.选择“选择→反选”,再按delete删除就ok了.
- Angular7 HttpClient处理多个请求
1. MergeMap - 串联请求 后一个请求需要前一个请求的返回结果时,需要使用串联请求. 可以使用MergeMap实现, 优势是减少嵌套,优化代码: 代码如下: import {HttpClie ...
- 有了 CompletableFuture,使得异步编程没有那么难了!
本文导读: 业务需求场景介绍 技术设计方案思考 Future 设计模式实战 CompletableFuture 模式实战 CompletableFuture 生产建议 CompletableFutur ...
- 自适应布局display:-webkit-box的用法
在web布局中,我们经常使用的是display:inline-block,display:flex,这些,但其实在进行移动端设备自适应布局中,-webkit-box布局更加合适 不同的浏览器有不同的前 ...
- Scala 学习笔记之集合(1)
package com.citi.scala object CollectionDemo { def main(args: Array[String]): Unit = { /** * List */ ...
- JAVA错误提示:The operation is not applicable to the current selection.Select a field which is not declared as type variable or a type that declares such fields.
平时没怎么注意,今天用Eclipse自动生成Set Get方法时提示错误,错误信息如下: The operation is not applicable to the current selectio ...
- git分支概念与项目中的应用
文档:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B 分支理解 m ...
- 【Java基础】Java中的语法糖
目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...
- 利用procedure批量插入数据
正文 要求在页面查询到5000条数据,为了方便插入,准备用shell脚本写curl命令调用自己写的代码接口,但是速度慢,而且写的时候遇到点儿小问题,故用sql语句写了这个功能 由于operat ...
- 用深度学习做命名实体识别(七)-CRF介绍
还记得之前介绍过的命名实体识别系列文章吗,可以从句子中提取出人名.地址.公司等实体字段,当时只是简单提到了BERT+CRF模型,BERT已经在上一篇文章中介绍过了,本文将对CRF做一个基本的介绍.本文 ...