SpringBoot-yml配置文件的使用与优势

目录

一、什么是yml配置文件?

 二、如何在SpringBoot中使用yml配置文件?

三、如何在SpringBoot中注入yml配置文件的属性?

@Value注解

 @ConfigurationProperties注解

四、yml配置文件与properties配置文件的区别和优势 

区别

优势

五、总结


一、什么是yml配置文件?

yml是一种数据序列化语言,它以数据为中心,而不是以标记语言为重点。它使用空格缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容等。

yml的语法和其他高级语言类似,并且可以简单表达清单、散列表、标量等数据形态。它支持多种数据类型,如对象、数组、纯量等。

yml的基本语法如下:

  • 使用冒号(:)表示键值对,冒号后面必须跟一个空格
  • 使用短横线(-)表示列表项,短横线后面必须跟一个空格
  • 使用缩进表示层级关系,缩进必须使用空格,不能使用制表符(tab)
  • 使用井号(#)表示注释,井号后面必须跟一个空格
  • 使用三个连续的短横线(—)表示多文档块的开始,可以在一个文件中定义多个环境
  • 使用三个连续的句点(…)表示多文档块的结束

例如:

# 这是一个yml配置文件示例
server:port: 8080 # 端口号servlet:context-path: /demo # 上下文路径
spring:datasource: # 数据源配置url: jdbc:mysql://localhost:3306/test # 数据库连接地址username: root # 用户名password: 123456 # 密码driver-class-name: com.mysql.cj.jdbc.Driver # 驱动类名profiles: # 环境配置active: dev # 激活开发环境---
# 开发环境配置
spring:profiles: dev # 环境名称application:name: demo-dev # 应用名称---
# 生产环境配置
spring:profiles: prod # 环境名称application:name: demo-prod # 应用名称

 二、如何在SpringBoot中使用yml配置文件?

SpringBoot支持两种格式的配置文件,一种是properties,另一种是yml。默认情况下,SpringBoot会在resources目录下寻找名为application.properties或application.yml的文件作为全局配置文件。

如果想要使用yml格式的配置文件,我们可以在resources目录下创建一个名为application.yml的文件,并按照yml的语法编写我们需要的属性。

如果我们想要使用多个yml配置文件,例如针对不同的环境或功能模块,我们可以在resources目录下创建多个名为application-{profile}.yml的文件,其中{profile}是自定义的环境或模块名称。

例如:

# application.yml 全局配置文件
server:port: 8080---
# application-dev.yml 开发环境配置文件
spring:profiles: dev # 环境名称datasource:url: jdbc:mysql://localhost:3306/devdb # 开发数据库地址---
# application-prod.yml 生产环境配置文件
spring:profiles: prod # 环境名称datasource:url: jdbc:mysql://localhost:3306/proddb # 生产数据库地址

如果我们想要切换不同的环境或模块,我们可以在全局配置文件中指定spring.profiles.active属性,或者在启动参数中添加–spring.profiles.active参数。

例如:

# application.yml 全局配置文件
server:port: 8080
spring:profiles:active: dev # 激活开发环境

或者

java -jar demo.jar --spring.profiles.active=prod # 激活生产环境

三、如何在SpringBoot中注入yml配置文件的属性?

在SpringBoot中,我们可以使用@Value注解或者@ConfigurationProperties注解来注入yml配置文件的属性到我们的Java类中。

@Value注解

@Value注解可以用来注入单个属性,它的语法是@Value(“${属性名}”),其中属性名可以是yml配置文件中定义的任意键值对的键。

例如:

# application.yml 配置文件
server:port: 8080
name: Tom
age: 20
// DemoController.java 控制器类
@RestController
public class DemoController {// 注入server.port属性@Value("${server.port}")private int port;// 注入name属性@Value("${name}")private String name;// 注入age属性@Value("${age}")private int age;// 显示属性值@GetMapping("/show")public String show() {return "port: " + port + ", name: " + name + ", age: " + age;}

 @ConfigurationProperties注解

@ConfigurationProperties注解可以用来注入一组属性,它的语法是@ConfigurationProperties(prefix = “前缀”),其中前缀可以是yml配置文件中定义的任意对象的键。

例如:

# application.yml 配置文件
server:port: 8080
person:name: Tomage: 20hobbies:- reading- writing
// Person.java 实体类
@Component // 声明为组件,让Spring容器扫描和管理
@ConfigurationProperties(prefix = "person") // 指定前缀为person
public class Person {// 定义与yml配置文件中相同的属性名和类型,注意要有getter和setter方法private String name;private int age;private List<String> hobbies;// getter and setter methods}
// DemoController.java 控制器类
@RestController
public class DemoController {// 注入Person实例,它已经自动绑定了yml配置文件中的person对象的属性值@Autowiredprivate Person person;// 显示属性值@GetMapping("/show")public String show() {return "name: " + person.getName() + ", age: " + person.getAge() + ", hobbies: " + person.getHobbies();}
}

四、yml配置文件与properties配置文件的区别和优势 

yml配置文件与properties配置文件都是SpringBoot支持的两种配置文件格式,它们都可以用来定义和管理应用程序的属性。那么,它们有什么区别和优势呢?

区别

  • yml配置文件使用冒号(:)表示键值对,properties配置文件使用等号(=)表示键值对。
  • yml配置文件使用缩进表示层级关系,properties配置文件使用点号(.)表示层级关系。
  • yml配置文件支持多文档块,可以在一个文件中定义多个环境或模块,properties配置文件不支持多文档块,需要创建多个文件来定义多个环境或模块。
  • yml配置文件支持多种数据类型,如对象、数组、纯量等,properties配置文件只支持字符串类型。

优势

  • yml配置文件更简洁,更易读,更易写,没有冗余的符号和重复的内容。
  • yml配置文件更灵活,更强大,可以表达更丰富的数据结构和格式。
  • yml配置文件更方便,更高效,可以在一个文件中定义和切换多个配置好的yml文件

五、总结

本文介绍了yml配置文件的语法、特点和使用方法,并与properties配置文件进行了对比,分析了yml配置文件的优势和局限性。我们可以看出,yml配置文件是一种更简洁、更灵活、更方便的配置文件格式,它可以让我们更容易地管理和切换不同环境或模块的配置。当然,yml配置文件也有一些需要注意的地方,如缩进、空格、数据类型等,我们需要遵循yml的语法规则,否则可能会导致配置文件无效或出现错误。

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

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

相关文章

非凸联合创始人李佐凡受邀出席复旦DSBA项目座谈会

8月17日&#xff0c;非凸科技联合创始人&CTO李佐凡受邀参加复旦管院数据科学与商业分析专业硕士&#xff08;DS&BA&#xff09;项目发展座谈会&#xff0c;与学校教授、老师在生源背景、课程教学、职业发展、学生培养和企业合作方面进行深入交流&#xff0c;旨在更好地…

【C++练习】普通方法+利用this 设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义一下成员函数

题目 设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义成员函数: void set_ len(int l); //设置长度 设置宽度void set_ wid(int w); 获取长度: int get len(); 获取宽度: int get _wid); 显示周长和面积: v…

如何用Python实现从pdf文件精准抓取数据生成数据库!

要从PDF文件中提取数据并生成数据库&#xff0c;你可以使用Python中的一些库和工具来实现。 1、安装必要的库&#xff1a;确保已安装所需的库。除了之前提到的PyPDF2、pdfminer.six和pdftotext之外&#xff0c;你可能还需要其他的库来处理提取的数据和数据库操作。例如&#x…

民族传统文化分享系统uniapp 微信小程序

管理员、用户可通过Android系统手机打开系统&#xff0c;注册登录后可进行管理员后端&#xff1b;首页、个人中心、用户管理、知识分类管理、知识资源管理、用户分享管理、意见反馈、系统管理&#xff0c;用户前端&#xff1b;首页、知识资源、用户分享、我的等。 本系统的使用…

GO-vscode远程开发和调试

本文内容主要包括&#xff1a; 概述&#xff1a; 主要就是把代码放到服务器上然后远程去开发和调试 工具&#xff1a; vscode 远程端&#xff1a; linux 一.安装远程插件 vscode安装Remote - SSH&#xff0c;Remote Explorer&#xff0c;Remote Development&#xff0c…

4.8 C++ Boost 应用JSON解析库

property_tree 是 Boost 库中的一个头文件库&#xff0c;用于处理和解析基于 XML、Json 或者 INFO 格式的数据。 property_tree 可以提供一个轻量级的、灵活的、基于二叉数的通用容器&#xff0c;可以处理包括简单值&#xff08;如 int、float&#xff09;和复杂数据结构&#…

C++最易读手撸神经网络两隐藏层(任意Nodes每层)梯度下降230820a

这是史上最简单、清晰&#xff0c;最易读的…… C语言编写的 带正向传播、反向传播(Forward ……和Back Propagation&#xff09;……任意Nodes数的人工神经元神经网络……。 大一学生、甚至中学生可以读懂。 适合于&#xff0c;没学过高数的程序员……照猫画虎编写人工智能、…

矿井水处理技术离子交换树脂法

矿井水除氟的要求一般是处理后水中的含氟量≤1.0mg/L。氟化物含量高的原水往往呈偏碱性&#xff0c;pH值常大于7.5。利用阴离子交换树脂上的可交换阴离子&#xff0c;去交换水中的氟离子&#xff0c;达到除氟目的。氟离子的选择交换性较大&#xff0c;树脂上的SO42-、Cl-等阴离…

卷积过程详细讲解

1&#xff1a;单通道卷积 以单通道卷积为例&#xff0c;输入为&#xff08;1,5,5&#xff09;&#xff0c;分别表示1个通道&#xff0c;宽为5&#xff0c;高为5。假设卷积核大小为3x3&#xff0c;padding0&#xff0c;stride1。 卷积过程如下&#xff1a; 相应的卷积核不断…

企微配置回调服务

1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、概述2、相关文档地址 二、企微配置消息服务器1、配置消息接收参数2、参数解析3、参数拼接规则 三、代码编写—使用已有库1、代码下载2、代码修改3、服务代码编写 …

基于swing的超市信息管理系统java jsp仓库进销存mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的超市信息管理系统 系统有1权限&#xff1…

Linux驱动开发(Day5)

思维导图&#xff1a; 不同设备号文件绑定&#xff1a;

回归预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本…

ElasticSearch-集成ik分词器

本文已收录于专栏 《中间件合集》 目录 背景介绍版本选择优势说明集成过程1.下载安装包2.解压安装包3.重启ElasticSearch服务3.1通过ps -ef | grep elastic查看正在启动的es进程号3.2使用kill -9 xxx 杀死进程3.3使用 ./elasticsearch 启动es服务 分词测试细粒度分词方式分词请…

CTFshow 限时活动 红包挑战9 详细题解

CTFshow红包挑战9 题目源码开源了。源码如下&#xff1a; common.php <?phpclass user{public $id;public $username;private $password;public function __toString(){return $this->username;}}class cookie_helper{private $secret "*************"; /…

【Java架构-包管理工具】-Maven私服搭建-Nexus(三)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具&#xff0c;在此咱们由浅入深&#xff0c;分三篇文章&#xff08;Maven基础、Maven进阶、私服搭建&#xff09;来深入学习Maven&#xff0c;此篇为开篇主要介绍Maven私服搭建-Nexus 文章目录 本文摘要1. Nexus安装…

【multimaster_fkie】多 ros master core 通信库,不配置主从机进行 ros 多机通信

1. 简介 多个 ros 系统之间可以通过配置 ros 主从机实现互相通信&#xff0c;但有的场景每个 ros 系统都需要运行 rosmaster/roscore &#xff0c;这种情况下就需要使用 multimaster_fkie 库来实现 ros 通信。 Github&#xff1a;https://github.com/fkie/multimaster_fkie RO…

本地搭建CFimagehost私人图床【公网远程访问】

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

Redis数据结构之Set

Set 类型是一个无序并唯一的键值集合&#xff0c;它的存储顺序不会按照插入的先后顺序进行存储。Redis 中集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是 O(1)。相对于列表&#xff0c;集合也有两个特点&#xff1a;无序、不可重复 …

js reverse实现数据的倒序

2023.8.25今天我学习了如何在数组顺序进行倒序排列&#xff0c;如&#xff1a; 原数组为&#xff1a; 我们只需要对数组使用reverse()方法 let demo [{id: 1, name: 一号},{id: 2, name: 二号},{id: 3, name: 三号},]demo.reverse()console.log(demo) 扩展&#xff1a; 当我…