SpringBoot 项目中 YML 配置文件的使用
本篇文章用于总结 YML
配置文件的使用,如果错误之处,请批评指正,希望观众老爷们多多支持!
1. 概述
YML 是什么?
- YML (YAML Aint’t a Martup Language) YAML 不是一种标记语言,通常以
.yml
为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以与支持 YAML 库的编程语言所导入使用,一种专门用来写配置文件的语言。
YAML 试图用一种比 XML 更敏捷的方式,来完成 XML 所完成的任务。例如:
student:name: yanghiage: 15
<student><name>yanghi</name><age>15</age>
</student>
YML 优点
- YML 易于人们阅读
- 更加简洁明了
2. 语法
2.1. 预定
key: value
表示键值对关系,冒号后面必须有一个空格- 使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
- 大小写敏感
- 缩进时不允许使用 Tab 键,只允许使用空格
- Java 中对于驼峰命名法,可用原名或者
-
代替驼峰,如 Java 中的lastName
属性,在 yml 中使用lastName
或者last-name
都可正确映射
2.2. 键值关系
1. 普通值(字面量)
key: value
字面量直接写
字符串默认不用加上单引号或者双引号:
- 字符串使用双引号
" "
包裹时,转义字符能够被解析 - 字符串使用单引号
' '
包裹时,转义字符不能够被解析,如name: hi \n yml
,\n
被识别为字符串
2. 日期
日期值用 /
进行分隔
date: 2019/01/01
3. 对象(属性和值)、Map(键值对)
Map 和 对象的写法一样,因为 Map 中存储的对象是键值对的形式
多行写法:key:value
student:name: yanghiage: 15
单行写法:对象字面量 {key1: value1, key2: value2}
student: {name: yanghi, age: 15}
4. 数组、list、set
数组、list、set,存储的数据都是一个个值,所以它们的写法是相同的
多行写法:用 -
值连接数组中的一个元素
pets:- dog- pig- cat
单行写法:数组的形式 [item1, item2, ...]
pets: [dog, pig, cat]
5. 对象、集合、普通值的嵌套
比如说一个数组中的值是一个对象,这个对象中的某个属性的属性值是一个集合
students:- {name: yanghi, age: 18, hobby: [eat, music]}- {name: zhangsan, age: 18, hobby: [eat, music]}- {name: lisi, age: 18, hobby: [eat, music]}
我们只需要掌握对象、集合、普通值的写法,进行嵌套就可以掌握了。
2.3. 占位符赋值
占位符相当于一个提前定义的变量
应用场景:就是在进行 yml
配置时,有些变量的值是重复的,那么我们就可以使用占位符来代替,当修改占位符的值,其他所有的都会改变。
myPort: 8080
# SpringBoot 配置服务器的端口
server:port: ${myPort: 8888}
${myPort: 8888}
表示引用提供定义好的 myPort
,8888
表示设置的变量,没有赋值的时候的默认值。也可以不写默认值,相当于 ${myPort: }
3. SpringBoot 读取 YML
3.1. @Value 注解
@Value
注解只能读取简单类型的值(8种基本数据类型及其包装类,String、Date)
首先我们在 SpringBoot
项目根目录的 resources
文件夹下,创建 application.yml
这就是我们项目的配置文件。
在该文件中写入以下配置:
student:name: yanghi
读取方式:在类的成员属性上加上 @Value("")
注解,""
内填入值的路径:student.name
,就会读取的配置文件中的值,注入到对应的成员属性上了。
@RestController
public class TestController {@Value('${student.name}')private String name;@RequestMapping("/test")public String test(){return name;}
}
注意:使用了 @Value
注解的类,必须交由 Spring 容器进行管理,否则该注解会失效。
3.2. @ConfigurationProperties注解
通常我们读取 yml 配置文件的常用方式是 @ConfigurationProperties
注解,因为@Value
注解只能单个的读取配置文件中的值,而@ConfigurationProperties
注解可以直接读取我们的配置文件,并且可以直接把 YML 配置文件中的 key: value
键值对,映射到类中的成员属性中去。
使用
在application.yml
中书写以下配置
student:name: yanghiage: 15hobby: [eat, music]
在项目根目录下,创建 Student
实体类,用于对应 yml 配置中的 student 对象。并在类上添加 @Component
、@ConfigurationProperties(perfix = "prefix")
注解。
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(perfix = "student")
public class Student {private String name;private Integer age;private List<String> hobby;}
类上标注的注解解释:
@Data
Lombok
注解 自动为类成员属性添加getter setter
方法@AllArgsConstructor
Lombok
注解 为类添加有参构造方法@NoArgsConstructor
Lombok
注解 为类添加无参构造方法 使用了@AllArgsConstructor
注解,一定要添加@NoArgsConstructor
注解@Component
泛指各种组件,该注解表示的类,会交给Spring
容器进行管理@ConfigurationProperties(prefix = "" )
获取配置文件值,注入到类成员属性中,prefix
前缀,用于导入特定前缀下的属性。
从 Spring 容器中获取 Student 对象
@RestController
public class TestController {@AutoWiredprivate Student student;@RequestMapping("/test")public String test(){return student;}
}
4. YML 和 properties 相互转换
SpringBoot 项目支持 YML
和 properties
两种配置文件格式
在实际项目开发中,有的同学喜欢用 YML
格式,有的同学喜欢用 properties
格式。
那么我们可以使用 YML
和 properties
格式转换工具,进行格式之间的相互转换: https://toyaml.com/index.html
5. 配置 YML 书写提示
在书写 YML 配置时,我们希望敲一些关键字,可以显示出完整的提示,如输入 port
,提示 server.port
。
我们只需要在 Maven
配置文件 pom.xml
中,添加注解处理器依赖即可。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>
然后重新编译项目,就可以显示提示了。
SpringBoot 项目中 YML 配置文件的使用相关推荐
- IDEA springboot项目中properties配置文件 {针对将对应GBK改为UTF-8并勾选转为ASCII后仍无效情况} 运行时中文乱码解决
springboot项目中properties配置文件中,运行时中文乱码情况 file encoding里边进行设置,设为utf-8并勾选转为ascii,分别在setting.setting for ...
- SpringBoot项目中ShiroConfig 配置文件无法注入bean和使用@Value注解的问题
在开发项目过程中,shiro配置类使用@Autowired无法将bean注入到spring容器中,并且使用@Value无法从配置文件中获取值的问题.查询得知需要将下面这个类改为static才正常,具体 ...
- 【SpringBoot零基础案例05】【IEDA 2021.1】若SpringBoot项目两种配置文件同时存在,哪种文件配置起作用?
新建模块,并创建IndexController类 package com.zx.springboot.web;import org.springframework.stereotype.Control ...
- SpringBoot项目中遇到的BUG
1.启动项目的时候报错 1.Error starting ApplicationContext. To display the auto-configuration report re-run you ...
- 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率
基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率 1.拉取logstash,kibana,es,mysql镜像 #命令 ...
- SpringBoot项目中集成第三方登录功能
SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...
- SpringBoot 项目中集成 Prometheus 和 Grafana
项目上线后,除了能保障正常运行以外,也需要服务运行的各个指标进行监控,例如 服务器CPU.内存使用占比,Full GC 执行时间等,针对一些指标出现异常,可以加入一些报警机制能及时反馈给开发运维.这样 ...
- springboot引入外部yml配置文件
本文记录下springboot引入外部yml配置文件 文章目录 概述 本文小结 概述 如果不想把所有的配置都写在application.yml文件中,把它拆分成多个yml文件,并在applicatio ...
- Springboot项目中使用Kafka
Springboot项目中使用Kafka 第一步:安装好Kafka服务器 具体可参考: https://blog.csdn.net/weixin_40990818/article/details/10 ...
最新文章
- Python培训教程分享:“高效实用” 的Python工具库
- Python进阶最新中文版,开源!
- Red Hat Enterprise Linux 5---system-config-*管理工具
- lnmp 切换mysql 版本_LNMP1.5:php多版本切换
- Solr 5.4.0
- 【hadoop】hive 安装实践
- eclipse整体替换
- 获取泛型T的ClassT clazz
- 苹果将于 2025 年推出的 Apple Car 长什么样?
- 两年半php,两年半,我收获了什么?
- TP框架使用ajax的post请求方式下载文件
- wow修改人物模型_人物修改教程更仔细
- cocos2dx图片加密解密(npk方式)
- 串级调节系统参数整定方法(串级调节器参数整定)
- HTML表格中输数字进行计算,excel表格如何自动计算输入数字
- linux 查看硬盘序列号、设备序列号、系统安装时间
- 华为发布八核处理器Kirin 920
- 2022鹏业安装算量软件10大常见问题整理
- 企业专线传输网络与普通宽带的对比
- 免费网络电话App 传统通信破冰者
热门文章
- 微信群裂变操作流程方案
- secureCRT Ctrl + C
- 自定义 View(一)仿 QQ 列表 Item 侧拉删除功能
- 【爬虫学习笔记day11】1.9. 参考阅读:urllib:Handler处理器和自定义Opener+ProxyHandler处理器(代理设置)+cookiejar库 和 HTTPCookieProc
- chm“已取消到该网页的导航 ”或者“无法显示网页”的解决
- latex中显示引用文献缺失
- DEP栈保护ASLR 开启关闭
- 分层架构图怎么做,先收藏了
- 一行代码告诉你为什么python代码中要加#coding:utf-8注释
- 微信备份通讯录 服务器,微信备份通讯录在哪,教您微信备份通讯录在哪