您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

关于spring boot的YAML 配置文件

时间:2022-06-22 11:07:02  来源:  作者:Java后端架构猛猛

一、YAML 简介

1、什么是 YAML ?

  • YAML(YAML AIn't Markup Language),一种数据序列化格式。
  • 这种格式的配置文件近些年逐渐进入市场,并开始占据主导地位。

2、优点

  • 较 xml 类型和 properties 类型相比,更容易阅读,结构也更加的清晰。
  • 容易与脚本语言交互。
  • 以数据为核心,重数据轻格式,轻格式并不是说可以不遵守格式,只是格式更加随性一些。

3、扩展名

  • 扩展名有两种,无论是哪个扩展名,都是 YAML 格式的配置文件,拥有 YAML 的属性。.yml ,这种扩展名更加主流一些.yaml

4、语法规则

  • 对大小写非常敏感,如:定义 age 和 AGE 都会认为是两个属性。
  • 属性层级关系使用多行描述,每行结尾使用冒号结束。
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格。
  • 空格个数并不重要,只要保证同层级的左侧对齐即可。
  • 属性值前面添加空格。
  • 号表示注释。

5、格式

server:  port: 80
  • 切记:属性值前面必须有一个空格。
  • port 是 server 下的一个属性,根据属性层级之间使用多行描述,以及使用缩进表示的规则,port 的书写位置如上所示,但一般情况下,这种格式我们无需过多纠结,我们回车换行后自动提供的格式一般都是正确的。

6、数组数据

name: 准JAVA全栈开发工程师server:  port: 80# 数组格式likes:  - game  - movie  - music
  • 数组数据的属性值换行书写,以 “-” 减号开头,注意属性值前空格,如上述 likes 所示。

二、三种配置文件

以配置端口号为例,介绍三种配置文件及其格式。

1、properties 类型

  • 在未接触到 yaml 之前,我们的配置文件大多数都是以 properties 结尾的文件。
server.port=80
  • 格式为:属性名=属性值 。
  • 这种方式还是非常常见的,我们之前在配置连接数据库相关信息的 jdbc.properties 文件也是使用的改变方式。

2、yml 类型

server:  port: 81
  • 将端口号设置为 81 。

3、yaml 类型

  • yml 和 yaml 只是扩展名不同而已,其实是一种类型的配置文件。
server:  port: 82

4、优先级

  • 当项目中同时存在上述三个配置文件时,用采用那个配置文件呢?我们可以通过观察端口号来获得优先级顺序。
  • 端口号为 80 ,说明有人优先采用了 properties 类型的配置文件,它的优先级最高。
  • 将 properties 配置文件中的配置内容删除,观察 .yaml 和 .yml 那种文件优先级更高。
  • 端口号又变为了 81 ,说明 .yml 文件优先级更高一些,虽然 .yaml 只是不同的扩展名罢了。
  • 总结:优先级由高到低 properties > yml > yaml

三、YAML 代码提示功能

  • 有很多小伙伴反应,说在写什么 YAML 文件时,代码不提示。
  • 没有代码提示功能,对我们的开发还是造成了一定的影响的,下面就带着大家来解决这个问题。
  • 首先进入到模块管理。
  • 将 YAML 类型的两个配置文件添加。
关于spring boot的YAML 配置文件

 

  • 选中创建的两个配置文件,完成后点击 “OK” 即可。
关于spring boot的YAML 配置文件

 

  • 此时的配置文件已经变成了三个。
关于spring boot的YAML 配置文件

 

  • 重新回到配置文件看是否实现了代码提示的功能。
关于spring boot的YAML 配置文件

 

  • 已经实现了代码提示功能,虽然是 YAML 文件,但是代码提示的还是按照 properties 类型进行的,并不影响,找到需要的属性直接回车后还是会呈现出 YAML 格式。

四、读取 YAML 配置文件中的数据

1、数据准备

sourceName: SpringBoot server:  port: 80 user:  name: 准Java全栈开发工程师  age: 22  likes:    - music    - game    - movie

2、方式一:@Value

@SpringBootTestclass DemoApplicationTests {     @Value("${sourceName}")    private String sourceName;    @Value("${server.port}")    private Integer port;    @Value("${user.likes[0]}")    private String likes;     @Test    void contextLoads() {        System.out.println(sourceName);        System.out.println(port);        System.out.println(likes);    }}
  • 将要读取的数据定义为属性,使用 @Value 注解读取配置文件中的数据并注入给属性,之后在方法体中可以直接使用。

3、方式二:Environment

@SpringBootTestclass DemoApplicationTests {    @Autowired    private Environment environment;     @Test    void contextLoads() {        System.out.println(environment.getProperty("sourceName"));        System.out.println(environment.getProperty("server.port"));        System.out.println(environment.getProperty("user.likes[0]"));    }}
  • SpringBoot 提供有 Environment 对象,可以将配置文件中的所有数据都封装到该对象中,使用 getProperty 方法,将想要读取的数据名作为参数传入即可。

4、方式三:自定义对象

user:  name: 准Java全栈开发工程师  age: 22  likes:    - music    - game    - movie
  • 对于配置类中的 user 数据,其下还有很多子层,如果我们想一下子将 user 的所有数据都取出,应该怎么做呢?将其封装为一个对象。
@Component  // 将bean的创建工作交由Spring管理// @ConfigurationProperties 注解表示加载配置文件// 使用prefix前缀表示只加载指定前缀的数据@ConfigurationProperties(prefix = "user")public class User {    private String name;    private Integer age;    private Object[] likes;	// get、set、toString和构造器方法省略}
  • 和我们定义实体类没有太大的区别,只是这次不再是和数据库表中的字段对应,而是和配置文件中定义的数据对应。
  • 除此之外,还需要使用 ConfigurationProperties 注解加载配置文件,使用 prefix 指定加载数据的前缀。
@SpringBootTestclass DemoApplicationTests {    @Autowired    private User user;     @Test    void contextLoads() {        System.out.println(user);    }}
  • 使用该方式在定义实体类时,会报红提示
关于spring boot的YAML 配置文件

 

  • 我们只需要在 pom.xml 文件中导入相应的依赖即可。
<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-configuration-processor</artifactId>    <optional>true</optional></dependency>

原文链接:
https://www.cnblogs.com/qdxorigin/p/16396478.html



Tags:YAML   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Python技巧发挥YAML文件的全部潜力
下面是一个封装了YAML文件的增删改查操作的示例类import osimport yamlclass YamlFile: def __init__(self, yaml_file): if os.path.exists(yaml_file): #检查...【详细内容】
2023-07-18  Search: YAML  点击:(317)  评论:(0)  加入收藏
C语言操作yaml配置文件通用操作工具
在go语言中使用viper之类的库很方便的处理yaml配置文件,但是在c语言中就比较麻烦,经过一番思索和借助强大的github,发现了一个libyaml c库,但是网上的例子都比较麻烦,而且比较繁...【详细内容】
2022-07-07  Search: YAML  点击:(507)  评论:(0)  加入收藏
关于spring boot的YAML 配置文件
一、YAML 简介1、什么是 YAML ? YAML(YAML Ain&#39;t Markup Language),一种数据序列化格式。 这种格式的配置文件近些年逐渐进入市场,并开始占据主导地位。2、优点 较 xml 类型...【详细内容】
2022-06-22  Search: YAML  点击:(411)  评论:(0)  加入收藏
什么是 YAML?和 Spring Boot 有什么关系?
1、什么是YAMLYAML是"YAML Ain&rsquo;t a Markup Language"(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。主要强度...【详细内容】
2021-12-29  Search: YAML  点击:(325)  评论:(0)  加入收藏
告别xml,一起yaml,让配置文件更简洁流畅
背景日常工作中,项目编程免不了需要使用配置文件,早期yaml出现之前,大部分配置文件采用xml形式,但是以xml格式储存的数据要比以其他格式(如json、yaml)储存占有的空间要大得多,因为...【详细内容】
2021-06-21  Search: YAML  点击:(611)  评论:(0)  加入收藏
python+YAML格式文件,是不是该放弃其它格式了
现在越来越多的开源软件在配置文件中都使用了YAML格式,这种格式文件去除了引号以及各种括号,看起来语法更加精炼。究其原因,YAML格式用更少的语法来表达丰富的含义。YAML是一个...【详细内容】
2020-04-13  Search: YAML  点击:(407)  评论:(0)  加入收藏
如何读取yaml,json,ini等配置文件
实际项目中,还有一个比较重要的基础功能,就是读取相关的配置文件。今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的。1. json使用JSON 应该比较熟悉,它是一种轻量...【详细内容】
2019-09-02  Search: YAML  点击:(1040)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(7)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(11)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(23)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(61)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(51)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(41)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(58)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(71)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(94)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(91)  评论:(0)  加入收藏
站内最新
站内热门
站内头条