后端企业级开发之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

注意点

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

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

相关文章

安卓开发--安卓使用Echatrs绘制折线图

安卓开发--安卓使用Echatrs绘制折线图 前期资料安卓使用Echarts绘制折线图1.1 下载 Echarts 安卓资源1.2 新建assets文件1.3 新建布局文件1.4 在布局文件中布局WebView1.5 在活动文件中调用 最终效果 前期资料 Echarts 官网样式预览: https://echarts.apache.org/examples/zh/…

ClickHouse课件

列式存储数据库:hbase clickhouse 简介 ClickHouse入门 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用…

为表格添加背景色:\rowcolor, \columncolor,\cellcolor

设置行的背景 \rowcolor 是 LaTeX 中用于设置表格行的背景色的命令。它可以使表格更加美观和易于阅读。rowcolor 命令通常与 colortbl 宏包一起使用。 语法如下&#xff1a; \rowcolor{<color>}其中 表示要设置的背景色&#xff0c;可以是预定义的颜色名称&#xff08…

揭秘爬虫技术:从请求到存储的全方位解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、爬虫初探&#xff1a;请求与响应 二、数据解析&#xff1a;从混乱中提炼价值 三、数据…

2024年弘连网络FIC大会竞赛题线下决赛题

总结&#xff1a; FIC决赛的时候&#xff0c;很多小问题没发现&#xff0c;在pve平台做题确实很方便。 这套题目复盘完&#xff0c;服务器这块的知识确实收获了很多&#xff0c;对pve集群平台和网络拓扑也有了一定的认识&#xff0c;感谢各位大佬悉心指导。 接下来&#xff0…

Android 项目中自定义多个 RadioButton 并排一列选择效果实现

文章目录 1、静态版实现1.1、实现要求1.2、实现步骤1.3、代码实现1.4、代码实现说明1.5、结论 2、项目版实现(动态)1、先看效果图2、main的布局文件3、定义RadioButton的属性4、最后在代码中生成我想要的东东5、说明 3、后续优化方向 1、静态版实现 1.1、实现要求 我们需要在…

设计模型-系统架构师(三)

1、按照《中华人民共和国著作权法》的权利保护期&#xff0c;署名权和修改权 是永久保护的。 发表权、使用权和获取报酬权 保护期限 作者终生和死后的50年。 2、&#xff08;重要&#xff09;面向对象的分析模型主要由 顶层架构图、用例与用例图和&#xff08;&#xff09;构成…

国内半导体龙头企业的自动化转型之旅

在当今高速发展的科技时代&#xff0c;半导体行业正迎来前所未有的挑战与机遇。位于此浪潮前端的&#xff0c;是国内一家领先的半导体集成电路封装测试企业。凭借其规模和创新实力&#xff0c;该公司不仅在国内市场名列前茅&#xff0c;更是在全球半导体行业中占据了一席之地。…

(2020|ICML PMLR,线性 Transformer,核函数,RNN)Transformer 是 RNN

Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 线性 Transformers 3.1. Transformer 3.2.…

备战秋招—模拟版图面试题来了

随着暑期的脚步逐渐临近&#xff0c;电子工程和集成电路设计领域的毕业生们&#xff0c;也将迎来了另一个求职的黄金期——秋招。我们总说机会是留给有准备的人。对于有志于投身于模拟版图设计的学子们来说&#xff0c;为了在众多求职者中脱颖而出&#xff0c;充分备战模拟版图…

网络——多区域OSPF配置(OSPF系列第1篇)

简介 路由协议OSPF全称为Open Shortest Path First&#xff0c;也就开放是的最短路径优先协议&#xff0c;使用链路状态路由算法&#xff0c;isis协议也是使用链路状态路由算法。而RIP协议使用距离矢量路由算法。 区域 为了能够降低OSPF计算的复杂程度&#xff0c;OSPF采用分…

C++的AVL树

目录 基本概念 插入的语言分析 LL右旋 RR左旋 额外结论及问题1 LR左右旋 RL右左旋 额外结论及问题2 插入结点 更新bf与判断旋转方式 旋转代码实现 准备工作一 LL右旋的实现 RR左旋的实现 准备工作二 LR左右旋的实现 RL右左旋的实现 完整代码 基本概念 1、…

Android Studio 所有历史版本下载

一、官网链接 https://developer.android.google.cn/studio/archive 操作 二、AndroidDevTools地址 https://www.androiddevtools.cn/ 参考 https://blog.csdn.net/qq_27623455/article/details/103008937

Golang | Leetcode Golang题解之第102题二叉树的层序遍历

题目&#xff1a; 题解&#xff1a; func levelOrder(root *TreeNode) [][]int {ret : [][]int{}if root nil {return ret}q : []*TreeNode{root}for i : 0; len(q) > 0; i {ret append(ret, []int{})p : []*TreeNode{}for j : 0; j < len(q); j {node : q[j]ret[i] …

【加密与解密(第四版)】第十五章笔记

第十五章 专用加密软件 15.1 认识壳 15.2 压缩壳 UPX、ASPack、PECompact 15.3 加密壳 ASProtect(压缩、加密、反跟踪代码、CRC校验、花指令)、Armadillo(穿山甲)、EXECryptor、Themida 15.4 虚拟机保护软件 虚拟机引擎&#xff08;编译器解释器虚拟CPU环境指令系统&#xff…

Python代码:十七、生成列表

1、题目 描述&#xff1a; 一串连续的数据用什么记录最合适&#xff0c;牛牛认为在Python中非列表&#xff08;list&#xff09;莫属了。现输入牛牛朋友们的名字&#xff0c;请使用list函数与split函数将它们封装成列表&#xff0c;再整个输出列表。 输入描述&#xff1a; …

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题&#xff0c;2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起&#xff08;中国消防2019.12.应急管理部消防救援局官方微博&#xff09;&#xff0c;违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

python-绘制五星红旗(非标准)

完整代码如下&#xff1a; #五星红旗&#xff08;非标准版&#xff09; from turtle import* import math from random import* tracer(0) penup() goto(-640,220) pendown() color(gold,gold) begin_fill() for i in range(5): fd(150) right(144) # 大五角星 penup(…

[9] CUDA性能测量与错误处理

CUDA性能测量与错误处理 讨论如何通过CUDA事件来测量它的性能如何通过CUDA代码进行调试 1.测量CUDA程序的性能 1.1 CUDA事件 CPU端的计时器可能无法给出正确的内核执行时间CUDA事件等于是在你的CUDA应用运行的特定时刻被记录的时间戳&#xff0c;通过使用CUDA事件API&#…

JVM内存模型详解

Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础环境&#xff0c;它负责将Java代码转换为机器码并执行。在JVM中&#xff0c;内存管理是一个核心部分&#xff0c;它决定了Java程序如何分配、使用和回收内存。了解JVM的内存模型对于编写高效、健壮的Java程序至关重要…