SpringBoot之YAML文件的使用

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringBoot之YAML文件的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、YAML配置文件介绍
  • 二、YAML的使用
    • 自定义简单数据
    • 自定义对象数据
    • 自定义集合数据
    • @Value注解配置文件数据
    • @ConfigurationProperties读取配置文件数据
    • 占位符的使用
      • 使用配置文件中的值
      • 使用框架提供的方法
  • 三、配置文件的优先级
  • 四、bootstrap配置文件
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

在当今的软件开发领域,Spring Boot 已经成为了一个非常流行和广泛使用的框架。它简化了 Java 应用程序的开发过程,使开发者能够更加高效地构建企业级应用。
在 Spring Boot 中,配置文件是应用程序的重要组成部分。而 YAML 作为一种人性化的表现形式,因其简洁、易读和易于维护的特点,逐渐成为了 Spring Boot 配置文件的首选格式。
在这篇博客中,我将向你介绍 YAML 文件在 Spring Boot 中的使用。我们将探讨 YAML 的基本语法、如何在 Spring Boot 中配置 YAML 文件,以及一些常见的配置项示例。通过学习这些内容,你将能够更好地利用 YAML 文件来管理和配置你的 Spring Boot 应用程序。
无论你是刚刚开始学习 Spring Boot,还是已经有一定经验的开发者,我相信这篇博客都会对你有所帮助。让我们一起深入了解 YAML 文件在 Spring Boot 中的应用,提升我们的开发效率和代码质量。


提示:以下是本篇文章正文内容,下面案例可供参考

一、YAML配置文件介绍

clickable Avatar: undefined
介绍 Spring Boot 的方面
YAML(YAML Ain’t Markup Language)是一种人性化的表现形式,用于序列化数据,类似于标记语言,如 HTML 、XML ,但是其更加简洁,而且可读性更好。
YAML 文件的扩展名通常是.yml或.yaml。它使用空格缩进来表示结构,而不是使用标签或其他复杂的语法。这使得 YAML 文件易于阅读和编写,同时也保持了其结构的清晰。
在 Spring Boot 中,YAML 配置文件用于存储应用程序的配置信息,如数据库连接、端口号、日志级别等。Spring Boot 提供了自动加载 YAML 配置文件的功能,使得开发者可以轻松地管理和配置应用程序。
下面是一个简单的 YAML 配置文件示例:

server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: <PASSWORD>

在这个示例中,我们定义了两个部分:server和spring。server部分配置了服务器的端口号为8080。spring部分配置了数据源的信息,包括 URL 、用户名和密码。
YAML 配置文件的优势在于其简洁性和可读性。通过使用空格缩进来表示结构,我们可以清晰地看到配置的层次结构,并且易于理解和维护。此外,YAML 还支持注释,方便我们对配置进行说明和解释。

二、YAML的使用

自定义简单数据

我们还可以在YAML文件中配置其他信息以便我们在项目中使用。配置简单数据的方式如下:

  • 语法:
数据名:
  • 示例代码:
name: zhangsan

注意:value之前有一个空格

自定义对象数据

  • 语法:
对象:属性名1: 属性值属性名2: 属性值# 或者
对象: {属性名1: 属性值,属性名2: 属性值}
  • 示例代码:
# 学生1
student1:sex: femaleage: 10address: beijing
# 学生2
student2: {sex: female,age: 10,address: beijing}

注意属性名前面的空格个数不限,在yml语法中,相同缩进代表同一个级别,只要每个属性前的空格数一样即可。

自定义集合数据

  • 语法
集合:- 值1- 值2# 或者
集合: [值1,值2]
  • 示例代码
# 城市
city1:- beijing- tianjin- shanghai- chongqingcity2: [beijing,tianjin,shanghai,chongqing]# 集合中的元素是对象
students:- name: shangxuetangage: 28score: 88- name: chengxuyuanage: 38score: 90

注意:值与之前的 - 之间存在一个空格

@Value注解配置文件数据

@Controller
public class YmlController1 {@Value("${name}")private String name;@Value("${student1.age}")private int age;@Value("${city1[0]}")private String city1;@Value("${students[0].score}")private double score1;@RequestMapping("/yml1")@ResponseBodypublic String yml1(){System.out.println(name);System.out.println(age);System.out.println(city1);System.out.println(score1);return "hello springboot!";}
}

@ConfigurationProperties读取配置文件数据

通过@ConfigurationProperties(prefifix=“对象”)可以将配置文件中的配置自动与实体进行映射,这样可以将yml文件中配置的对象属性直接映射到Bean当中。
我们可以在application.yml文件中定义相应的配置项:

# application.yml
my:config:myProperty: value

假设我们有一个名为MyConfig的配置类,它包含了一些配置属性:

// MyConfig.java
@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {// 配置属性private String myProperty;// 获取配置属性的值public String getMyProperty() {return myProperty;}// 设置配置属性的值public void setMyProperty(String myProperty) {this.myProperty = myProperty;}
}

通过使用@ConfigurationProperties注解,我们可以方便地将配置文件中的数据映射到 Java 对象的属性上,从而实现了配置的解耦和可维护性。

占位符的使用

使用配置文件中的值

1.编写配置文件

server:port: 8888
myconfig:myport: ${server.port}

2.读取配置文件

@Controller
public class YmlController3 {@Value("${myconfig.myport}")private int port;@RequestMapping("/yml3")@ResponseBodypublic String yml3(){System.out.println(port);return "hello springboot!";}
}

使用框架提供的方法

SpringBoot框架提供了一些生成随机数的方法可以在yml文件中使用:

  • ${random.value} :生成类似uuid的随机数,没有"-"连接
  • ${random.uuid} :生成一个uuid,有短杠连接
  • ${random.int} :随机取整型范围内的一个值
  • ${random.int(10)}:随机生成一个10以内的数
  • ${random.int(100,200)}:随机生成一个100-200 范围以内的数
  • ${random.long}:随机取长整型范围内的一个值
  • ${random.long(100,200)}:随机生成长整型100-200范围内的一个值

三、配置文件的优先级

配置文件有如下存放位置:

  • 项目根目录下
  • 项目根目录下的/config子目录中
  • 项目的resources目录中
  • 项目的resources下的/config子目录中

这些配置文件的优先级从高到低依次为:项目根目录下的/config子目录>项目根目录下>项目的resources下的/config子目录>项目的resources目录中

四、bootstrap配置文件

Spring Boot 默认支持properties和YAML两种格式的配置文件,并且有bootstrap和application两种配置文件。
两者的区别在于:bootstrap配置文件先于application配置文件被加载,会先创建初始化 Bootstrap Context,再创建初始化 Application Context,应用于更早期的配置信息,可以理解为系统配置。bootstrap和application共享同一个Environment,默认情况下,bootstrap的配置不会被覆盖,而application的配置项可以被覆盖(比如被 application-dev 覆盖,或被 java 命令行覆盖)。
bootstrap配置文件主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。
bootstrap配置文件特征:

  • boostrap由父ApplicationContext加载,比applicaton优先加载。
  • boostrap里面的属性不能被覆盖。

总结

提示:这里对文章进行总结:

YAML 是一种用于配置和数据序列化的 human-readable data-serialization language,在 Spring Boot 中,YAML 文件可以用于配置应用程序的各种属性和参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/590584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue的file-saver

Vue FileSaver 是一个用于在浏览器中保存文件的 Vue.js 插件。它提供了一种简单的方式来将数据以文件的形式下载到用户的计算机上。 使用 Vue FileSaver&#xff0c;你可以将数据保存为常见的文件格式&#xff0c;如文本文件&#xff08;.txt&#xff09;、CSV 文件&#xff0…

产业互联网,并不存在严格意义上的互联网

产业互联网里的「互联网」字眼&#xff0c;让人们想当然地认为&#xff0c;其与互联网之间有着很多的联系&#xff0c;甚至很多人干脆就将产业互联网当成了一个互联网的衍生品&#xff0c;最终&#xff0c;再度将产业互联网带入到了互联网的怪圈之中。 事实上&#xff0c;真正…

Java中的自定义异常处理:业务异常类的创建与使用

文章内容 引言 在Java编程中&#xff0c;异常处理是一项重要的技术&#xff0c;它允许程序在遇到错误或特殊情况时能够优雅地处理&#xff0c;而不是直接崩溃。Java提供了丰富的内置异常类&#xff0c;但在实际业务开发中&#xff0c;我们往往需要根据具体的业务需求定义自己的…

目标检测-Two Stage-Mask RCNN

文章目录 前言一、Mask RCNN的网络结构和流程二、Mask RCNN的创新点总结 前言 前文目标检测-Two Stage-Faster RCNN提到了Faster RCNN主要缺点是&#xff1a; ROI Pooling有两次量化操作&#xff0c;会引入误差影响精度 Mask RCNN针对这一缺点做了改进&#xff0c;此外Mask …

数据结构——顺序栈与链式栈的实现

目录 一、概念 1、栈的定义 2、栈顶 3、栈底 二、接口 1、可写接口 1&#xff09;数据入栈 2&#xff09;数据出栈 3&#xff09;清空栈 2、只读接口 1&#xff09;获取栈顶数据 2&#xff09;获取栈元素个数 3&#xff09;栈的判空 三、栈的基本运算 四、顺序栈&…

AtCoder Beginner Contest 297(A-E)

比赛地址: AtCoder Beginner Contest 297 - AtCoder A - Double Click 思路 : 直接模拟即可 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std; typedef long long LL;inline vo…

springboot(ssm农产品直卖平台 农产品商城系统Java系统

springboot(ssm农产品直卖平台 农产品商城系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数…

Linux实战:部署基于Postfix 与 Dovecot 的邮件系统

一、电子邮件系统简介 在电子邮件系统中&#xff0c;为用户收发邮件的服务器名为邮件用户代理&#xff08;Mail User Agent&#xff0c;MUA&#xff09;&#xff0c;MTA &#xff08;邮件传输代理&#xff09;的工作职责是转发处理不同电子邮件服务供应商之间的邮件&#xff0…

目标检测 YOLOv5 - 推理时的数据增强

目标检测 YOLOv5 - 推理时的数据增强 flyfish 版本 YOLOv5 6.2 参考地址 https://github.com/ultralytics/yolov5/issues/303在训练时可以使用数据增强&#xff0c;在推理阶段也可以使用数据增强 在测试使用数据增强有个名字叫做Test-Time Augmentation (TTA) 实际使用中使…

docker-compose 安装 RocketMq

目录 1、rocketMq 官网 2、工作流程 RocketMQ集群工作流程​ 1. 启动NameServer​ 2. 启动 Broker​ 3. 创建 Topic​

PostgreSQL数据库的json操作

1.操作符 select json字段::json->key值 from order -- 对象域 select json字段::json->>key值 from order -- 文本 select json字段::json#>{key值} from order -- 对象域 select json字段::json#>>{key值} from order -- 文本对象域表示还能继续操作&#…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系&#xff1b; 数据库注入&#xff1a;access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入&#xff1a;数字型、字符型、搜索型、加密型&#xff08;base63 json&#xff09;等提交方式注入&#xff1a;get、post、…

ES6之生成器(Generator)

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

如何使用Git进行代码版本管理

目录 建立仓库 分支管理 推送代码 问题 建立仓库 先在远程代码托管平台&#xff08;如GitHub、GitLab等&#xff09;上创建一个新的仓库 使用命令行或终端&#xff0c;进入你的本地项目目录 如果项目还没有使用Git进行版本控制&#xff0c;可以通过执行以下命令来初始…

Origin 2021软件安装包下载及安装教程

Origin 2021下载链接&#xff1a;https://docs.qq.com/doc/DUnJNb3p4VWJtUUhP 1.选中下载的压缩包&#xff0c;然后鼠标右键选择解压到"Origin 2021"文件夹 2.双击打开“Setup”文件夹 3.选中“Setup.exe”鼠标右键点击“以管理员身份运行” 4.点击“下一步" 5…

拼题A 2024 跨年挑战赛

PTA | 程序设计类实验辅助教学平台 目录 跨年-1 特殊的年份 跨年-2 穿什么衣服 跨年-3 按比例发奖 跨年-4 骗钱的手机游戏 跨年-5 找年兽 跨年-6 新年烟花 跨年-7 奇因子之和 跨年-8 翻箱倒柜&#xff08;复刻&#xff09; 跨年-1 特殊的年份 直接枚举就行了 signed ma…

240101-5步MacOS自带软件无损快速导出iPhone照片

硬件准备&#xff1a; iphone手机Mac电脑数据线 操作步骤&#xff1a; Step 1: 找到并打开MacOS自带的图像捕捉 Step 2: 通过数据线将iphone与电脑连接Step 3&#xff1a;iphone与电脑提示“是否授权“&#xff1f; >>> “是“Step 4&#xff1a;左上角选择自己的设…

springboot3+vue3实现大文件分片上传和断点续传

大文件分片上传和断点续传 大文件分片上传是一种将大文件切分成小片段进行上传的策略。这种上传方式有以下几个主要原因和优势&#xff1a; 网络稳定性&#xff1a;大文件的上传需要较长时间&#xff0c;而网络连接可能会不稳定或中断。通过将文件切分成小片段进行上传&#xf…

低延时视频技术的应用场景和挑战

编者按 无线网络对人们的生活产生了巨大的影响&#xff0c;而5G技术的引入将彻底改变我们与世界互联互通的方式。在5G时代&#xff0c;实现万物互联离不开低延时技术的应用。 LiveVideoStackCon 2023 深圳站邀请到秒点科技的CEO扶凯&#xff0c;为大家分享低延时技术在物联网、…

【CF比赛记录】—— Good Bye 2023(A、B、C)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;CF比赛记录 &#x1f48c;其他专栏&#xff1a; &#x1f534;每日一题 &#x1f7e1; cf闯关练习 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓…