当前位置: 首页 > news >正文

后端企业级开发之yaml数据序列化格式文件详解2024

yaml格式

数据格式

yaml 是一种数据序列化的格式

容易阅读 容易与脚本语言交互 以数据为核心 重数据轻格式

我们要知道他怎么书写

大小写敏感

属性层级关系使用多行描述 每行结尾使用冒号结束

使用缩进表示层级关系

同层级左侧对其 只运行使用空格

属性前面添加空格

#表示注释

同样名称的属性只能出现一次

country: china
provice: beijing
city: beijing
area: beijingport: 8080party: truebirthday: 2003-12-04user:name: zhudaoyangage: 21

# 多层级属性 以后使用频率比较高
a:b:c:d:e: 123# 数组
likes1:- game- music- swim# 数组
likes2: [game,music.sleep]# 对象数组
users1:- name: gaochangage: 18- name: zhuaishaoage: 18# 对象数组
user2: [{name:gaochang,age:18},{name:zhuaishao,age:18}]

核心规则 数据前面要加空格隔开

读取单一属性性质

用Rest模式书写

@Value注解

@Value注解是Spring框架中的一个注解,用于将值注入到Spring Bean中。它通常用于将配置文件中的属性值注入到Spring Bean的字段或构造函数参数中。与@Autowired@Qualifier等注解相比,@Value注解更加简单直接,适用于简单的数值或字符串类型的注入。

在使用@Value注解时,你可以通过${}语法从属性文件中引用属性值,也可以直接指定一个常量值。

多种数据的读取

package com.bigdata1421.demo.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;// Rest模式
@RestController
@RequestMapping("/yaml")
public class YamlController {//读取yaml数据中的单一数据//spring中为数据注入基本数据类型或者是字符串@Value("${country}")private String country;//一级一级的往下@Value("${user.name}")private String user_name;// 数组@Value("${likes1[1]}")private String like;//对象数组@Value("${user1[0].name}")private String gc_name;@GetMappingpublic String getById(){System.out.println("springboot is running");System.out.println("country ===>" + country);System.out.println("user1.name ===>" + user_name);System.out.println("like ===>" + like);System.out.println("gc_name ===>" + gc_name);return "springboot is running...";}
}

变量引用

使用${属性名}引用数据

baseDir: c:\windows
tempDir: c:\windows\temp# 使用${属性名}引用数据
tempDir: ${baseDir}\temp

如果出现转义字符怎么修改

使用引号包裹的字符串其中的转义字符可以生效

读取全局属性

封装

一键搞定

用注解 @Autowired

@Autowired 是 Spring Framework 中的一个注解,用于自动装配依赖关系。在 Spring 应用程序中,通常会有很多不同的组件(如服务、存储库、控制器等),它们之间需要相互协作以完成业务逻辑。使用 @Autowired 注解,Spring 能够在运行时自动将依赖关系注入到组件中,而无需手动实例化这些依赖项。

当一个类标记了 @Autowired 注解时,Spring 容器会尝试在上下文中查找匹配该类型的 bean,并将其注入到目标类的相应字段、构造函数或者 setter 方法中。

在使用 @Autowired 注解时,有几种不同的方式可以指定注入的依赖:

  1. 字段注入:通过将 @Autowired 注解直接放在类的字段上来实现依赖注入。

  2. 构造函数注入:通过在类的构造函数上使用 @Autowired 注解来实现依赖注入。

  3. 方法注入:通过在类的方法上使用 @Autowired 注解来实现依赖注入。

package com.bigdata1421.demo.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;// Rest模式
@RestController
@RequestMapping("/yaml")
public class YamlController {//封装全部数据 自动装配注解//使用自动装配将所有数据封装到一个Environment对象里面去@Autowiredprivate Environment env;@GetMappingpublic String getById(){System.out.println("springboot is running");System.out.println("tempDir===>" + env.getProperty("tempDir"));return "springboot is running...";}
}

封装全部数据到Environment对象

读取引用类型属性

以后boot开发

我们会有一个类似于对象的数据格式

然后把数据封装进去

封装数据应该针对封装

我们在拿的时候就可以拿取对应的一组数据即可

这是我们的痛点

springboot 主流的数据封装

# 创建类 用于封装下面的数据
# 由 spring 帮我们去加载数据到对象里面去 一定要告诉 spring 加载这组信息
# 使用的时候从 spring 中获取信息datasource:driver: com.mysql.jbdc.Driverurl: jdbc:mysql://localhost/springboot_dbusername: rootpassword: root666

创建实体类封装数据

定义数据模型封装yml配置文件中的数据

我们加载的数据在配置文件中

配置文件是给spring用的

boot是为了加速spring开发的

所以我们要把对象交给spring管理控制

我们要定义为bean

注解@Component

指定加载的数据

注解 @ConfigurationPropertis

发起请求后 控制台输出信息

package com.bigdata1421.demo.datasource;import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component//定义为一个bean 交给spring去管理控制
@ConfigurationProperties(prefix = "datasource")//加载配置中的属性@Setter
@Getter
@ToString
@EqualsAndHashCode
public class MyDataSource {// 数据封装private String driver;private String url;private String username;private String password;}

application.yml 配置文件

配置文件中定义的是数据模型

# 创建类 用于封装下面的数据
# 由 spring 帮我们去加载数据到对象里面去 一定要告诉 spring 加载这组信息
# 使用的时候从 spring 中获取信息datasource:driver: com.mysql.jbdc.Driverurl: jdbc:mysql://localhost/springboot_dbusername: rootpassword: root666

以后定义数据就是一堆一堆的

这一堆信息加载给哪个对象

那一组信息加载给哪个对象

而我们springboot管控的所有对象

要求的配置都从这里配置分发到各个对象里面去

再读取对应的数值

这里的所有对象都是通过这种形式 被tomcat服务器读取到的

这样可以增加目录级数

小结

模型类封装了yaml文件里的一部分

通过一个@ConfigurationProperties实现

指定封装的哪一组数据

这个模型类要定义为Spring的bean

通过注释@Component实现

再用@Autowired实现依赖注入bean

注意点

相关文章:

后端企业级开发之yaml数据序列化格式文件详解2024

yaml格式 数据格式 yaml 是一种数据序列化的格式 容易阅读 容易与脚本语言交互 以数据为核心 重数据轻格式 我们要知道他怎么书写 大小写敏感 属性层级关系使用多行描述 每行结尾使用冒号结束 使用缩进表示层级关系 同层级左侧对其 只运行使用空格 属性前面添加空格 #表…...

智能界面设计:数字孪生与大数据结合的美学典范

智能界面设计:数字孪生与大数据结合的美学典范 引言 在数字化浪潮的推动下,智能界面设计成为了连接用户与技术的重要桥梁。数字孪生技术与大数据的结合,不仅为UI设计带来了前所未有的创新机遇,更成为了美学与功能性融合的典范。…...

听说部门来了个00后测试开发,一顿操作给我整麻了

公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司实习半年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍&#xff01…...

Linux shell命令

cat 文件名 查看文件内容, tac文件名 倒着显示。 more 文件名 显示内容 less文件名 和more的功能一样,按上下左右键,按Q键结束。 head文件名,只显示前10行内容。 ln是一个默认创建硬链接的命令 ln 文件名 ls -i文件名…...

【Linux】Linux基本指令1

1.软件,OS,驱动 我们看看计算机的结构层次 1.1.操作系统 操作系统是一款做 软硬件管理 的软件 操作系统(计算机管理控制程序)_百度百科 (baidu.com) 操作系统(英语:Operating System,缩写&a…...

重学java 49 增强for

知之俞明,则行之越笃;行之愈笃,则知之愈益; —— 24.5.28 一、基本使用 1.作用: 遍历集合或者数组 2.格式: for(元素类型 变量名:要遍历的集合名或者数组名) 变量名就是代表的每一个元素 3.快捷键: 集合名或者数组名.for package …...

BUUCTF靶场[Web] [极客大挑战 2019]Havefun1、[HCTF 2018]WarmUp1、[ACTF2020 新生赛]Include

[web][极客大挑战 2019]Havefun1 考点:前端、GET传参 点开网址,发现是这个界面 点击界面没有回显,老规矩查看源代码,看到以下代码 代码主要意思为: 用get传参,将所传的参数给cat,如果catdog…...

现代信号处理11_Spectral Analysis谱分析(CSDN_20240526)

谱分析与傅里叶变换 对于一个信号,一方面可以从时域上对其进行分析,另一方面也可以从频域上对其进行认识,对信号进行频谱分析能够帮助我们了解能量在频域上的分布。 确定性信号的能量通常是有限的,而平稳随机信号的能量通常是无限…...

C#开发上位机应用:基础与实践

C#是一种流行的面向对象编程语言,常用于Windows应用程序的开发。上位机应用是一种用于监控和控制设备或系统的应用程序,通常与下位机(如传感器、执行器等)进行通信。在本文中,我们将介绍C#开发上位机应用的基础知识和实…...

话术巧妙分隔沟通效果更佳看看这个小技巧

客服回复客户咨询,如果遇到比较复杂的问题,经常会有大段的文字回复,用聊天宝的分段符功能,在需要分段的地方点击右上角的“插入分隔符”,就可以在指定位置分段,实现多段发送的目的。 前言 客服回复客户咨询…...

【Spring】设计模式(GOF)

Spring Framework在其架构和实现中广泛使用了多种GOF(Gang of Four)设计模式。这些设计模式帮助Spring解决了许多常见的软件开发问题,提高了代码的可重用性、可维护性和可扩展性。 1、工厂模式(Factory Pattern) 1.1简…...

php抖音详情和关键词搜索api

抖音详情和关键词搜索的 API 可以通过抖音提供的开放平台来获取。以下是使用 PHP 实现的示例代码&#xff1a; 获取抖音视频详情 API&#xff1a; 获取Key和secret请移步 <?php$accessToken YOUR_ACCESS_TOKEN; // 替换为自己的 access_token $itemId YOUR_ITEM_ID; /…...

SOCKS 代理 和 HTTP 代理

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器&#xff0c;它们充当客户端和目标服务器之间的中介&#xff0c;但它们的工作方式和应用场景有所不同。 1. SOCKS 代理&#xff1a; 工作原理&#xff1a; SOCKS 代理是一种更底层的代理&#xff0c;…...

【Linux】自己实现一个bash进程

bash就是命令行解释器&#xff0c;就是Linux操作系统让我们看到的&#xff0c;与用户进行交互的一种外壳&#xff08;shell&#xff09;&#xff0c;当然了bash也是一个进程&#xff0c;它有时候就是通过创建子进程来执行我们输入的命令的。这无疑就离不开我们上篇博客所说的进…...

记录深度学习GPU配置,下载CUDA与cuDnn

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip cuda历史版本网址 CUDA Toolkit Archive | NVIDIA Developer 自己下载过11.0.1版本 点击下载local版本,本地安装,有2个多GB,很大,我不喜欢network版本,容易掉线 cuDnn https://developer.nvi…...

Word将表格调成合适的大小

请等待内容完善...

2024HBCPC:C Goose Goose Duck

题目描述 Iris 有 n n n 个喜欢玩鹅鸭杀的朋友&#xff0c;编号为 1 ∼ n 1∼n 1∼n。 假期的时候&#xff0c;大家经常会在群里问有没有人玩鹅鸭杀&#xff0c;并且报出现在已经参与的人数。 但是每个人对于当前是否加入游戏都有自己的想法。 具体的来说&#xff0c;对于第…...

Llama 3 模型家族构建安全可信赖企业级AI应用之使用 Llama Guard 保护大模型对话 (八)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…...

《一地霜白》读书笔记

1.3.6 街灯明灭&#xff0c;勾缀成行&#xff0c;为了生者与死者 “很多年过去了。回头看&#xff0c;沿着一排暗中的街灯&#xff0c;两三盏灭了&#xff0c;郁闷中有意外的欣喜&#xff1a;街灯明灭&#xff0c;勾缀成行&#xff0c;为了生者与死者。” 童年、青少年在人的…...

在Java中实现多线程之间的通信

一、技术难点 在Java中实现多线程之间的通信是一个复杂但重要的任务&#xff0c;它涉及到线程同步、数据共享和线程间协作等多个方面。以下是实现多线程通信时可能遇到的一些技术难点&#xff1a; 线程同步&#xff1a;多线程环境下&#xff0c;多个线程可能同时访问和修改共享…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...