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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 后端企业级开发之yaml数据序列化格式文件详解2024

yaml格式

数据格式

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

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

我们要知道他怎么书写

大小写敏感

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

使用缩进表示层级关系

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

属性前面添加空格

#表示注释

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

country: china
provice: beijing
city: beijing
area: beijing
 
port: 8080
 
party: true
 
birthday: 2003-12-04
 
user:
  name: zhudaoyang
  age: 21

# 多层级属性 以后使用频率比较高
a:
  b:
    c:
      d:
        e: 123
 
# 数组
likes1:
  - game
  - music
  - swim
 
# 数组
likes2: [game,music.sleep]
 
# 对象数组
users1:
  - name: gaochang
    age: 18
  - name: zhuaishao
    age: 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;
 
    @GetMapping
    public 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对象里面去
    @Autowired
    private Environment env;
 
    @GetMapping
    public 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.Driver
  url: jdbc:mysql://localhost/springboot_db
  username: root
  password: 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.Driver
  url: jdbc:mysql://localhost/springboot_db
  username: root
  password: root666

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

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

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

而我们springboot管控的所有对象

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

再读取对应的数值

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

这样可以增加目录级数

小结

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

通过一个@ConfigurationProperties实现

指定封装的哪一组数据

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

通过注释@Component实现

再用@Autowired实现依赖注入bean

注意点

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
128 8
|
4月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
8天前
|
存储 人工智能 开发框架
Kheish:开源的多智能体开发框架,通过 YAML 配置工作流和多个 Agent 共同协作解决复杂任务
Kheish 是一个开源的多智能体协调平台,基于大型语言模型(LLM)设计,能够通过灵活配置多个智能体来解决复杂任务。平台支持模块化集成、聊天式提示、反馈循环等功能,适用于代码审计、法律文件分析、客户服务自动化等多种应用场景。
63 18
Kheish:开源的多智能体开发框架,通过 YAML 配置工作流和多个 Agent 共同协作解决复杂任务
|
2月前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
40 5
|
2月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
59 3
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
XML JSON Kubernetes
什么是 YAML?:一种简洁高效的数据序列化格式
什么是 YAML?:一种简洁高效的数据序列化格式
162 0
|
3月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
2月前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
51 0
|
3月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
979 2