首页 > 其他分享 >day05-2-yaml

day05-2-yaml

时间:2023-03-16 22:14:15浏览次数:40  
标签:name springframework private yaml day05 import org

yaml

1.yaml介绍

YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写。在开发这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),是为了强调这种语言以数据为中心,而不是以标记语言为重点,而使用了反向略缩语重命名

  • YAML 以数据为中心,而不是以标记语言为重点
  • YAML 仍然是一种标记语言,但是和传统的标记语言不一样,是以数据为中心的标记语言
  • YAML 非常适合用来做以数据为中心的配置文件,比如SpringBoot中使用application.yaml

官方文档:https://yaml.org/

java操作yaml文件

2.基本语法

  1. 形式为key: value(注意:后有空格)
  2. 区分大小写
  3. 使用缩进表示层级关系
  4. 缩进不允许使用tab,只能使用空格(有些地方识别tab,但推荐使用空格)
  5. 缩进的空格数不重要,只要保证相同层级的元素左对齐即可
  6. 字符串无需加引号
  7. #表示注释该行

3.数据类型

3.1字面量

字面量表示单个的,不可再分的值,包括字符串、布尔值、整数、浮点数、Null、日期类型。

  • 字符串 默认不用加引号,如果包含空格或特殊字符必须加引号,单引号或双引号都可以
userId: S123
username: "lisi"
password: '123456'
province: 山东
city: "济南 : ss"
  • 布尔值
success: true
  • 整数
age: 13
  • 浮点数
weight: 75.5
  • Null
gender: ~
createDate: 2001-12-14T21:59:43.10+05     

3.2对象

对象,键值对的集合,比如map、hash、object

  • 写在一行
k: {k1: v1,k2: v2,k3: v3}
address: {province: 山东, city: 济南}
  • 写在多行
k:
 k1: v1
 k2: v2
 k3: v3
address:
  province: 山东
  city: 济南

3.3数组

数组:一组按照次序排列的值,比如array、list、queue、set

  • 写在一行
k: [v1, v2, v3]
hobbyList: [游泳, 跑步]
  • 写在多行
k:
 - v1
 - v2
 - v3
hobbyList:
  - 游泳
  - 跑步

4.应用实例

  • 使用yaml配置文件,和Javabean进行数据绑定

(1)创建一个新的SpringBoot项目

(2)在pom.xml文件中引入相关的库

<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.5.3</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

(3)Bean Car.java

注意创建的bean需要在SpringBootApplication包或者其子包,否则不会被扫描,同时也不能完全使用Lombok的相关简化注解

package com.li.bean;

import lombok.Data;

/**
 * @author 李
 * @version 1.0
 */
@Data
public class Car {
    private String name;
    private Double price;
}

(3)Bean Monster.java

package com.li.bean;

import lombok.Data;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author 李
 * @version 1.0
 */
@ConfigurationProperties(prefix = "monster")
@Component
@Data
public class Monster {
    private Integer id;
    private String name;
    private Integer age;
    private Boolean isMarried;
    private Date birth;
    private Car car;
    private String[] skill;
    private List<String> hobby;
    private Map<String, Object> wife;
    private Set<Double> salaries;
    private Map<String, List<Car>> cars;
}

(4)HiController.java

package com.li.controller;

import com.li.bean.Monster;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author 李
 * @version 1.0
 */
@RestController//@Controller+@ResponseBody
public class HiController {
    @Resource
    private Monster monster;

    @RequestMapping("/monster")
    public Monster monster(){
        return monster;
    }
}

(5)启动类

package com.li;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 李
 * @version 1.0
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这时启动项目,访问控制器,返回的Monster对象的数据为null

image-20230316211410933

(6)使用yaml给Javabean绑定数据

文件支持yaml或者yml两种后缀,并且在编写application.yaml时,这些bean的字段是可以通过安装插件或者jar来自动提示的

创建resources/application.yaml

monster:
  id: 100
  name: 牛魔王
  age: 899
  isMarried: true
  birth: 1989/11/23
  # 对象
# car: {name: 宝马, price: 200000.0}
  car:
    name: 宾利
    price: 300000
  #  数组
# hobby: [打篮球, 游泳]
  hobby:
    - 篮球
    - 羽毛球
  skill: [芭蕉扇, 吐火]
  #map-属于对象类型
#  wife: {no1: 玉面狐狸,no2: 铁扇公主} #行内风格
  wife:
    no1: 玉面狐狸
    no2: 铁扇公主
#  salaries: [10000, 20000] #行内
  salaries:
    - 10000
    - 20000
  cars:
    group1:
     - {name: 宝马, price: 200000}
     - name: 保时捷
       price: 400000
    group2:
     - {name: 宾利, price: 300000}

image-20230316214747154 image-20230316214859572

5.yaml使用细节

  1. SpringBoot中,配置文件的三种格式:

    • application.properties

    • application.yml(推荐)

    • application.yaml

    yml 格式和 yaml 格式除了后缀不一样,里面格式完全一样,可以看作是一种格式

  2. 配置文件的加载优先级 properties(最高) > yml > yaml(最低)

  3. 不同配置文件中相同的配置,按优先级高的指定,不同配置文件,如果有不同的配置,则全部保留

  4. 如果yaml文件没有提示,可以引入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuratin-processor</artifactId>
        <optional>true</optional>
    </dependency>
    

    或者安装yaml插件

    image-20230316215822465

标签:name,springframework,private,yaml,day05,import,org
From: https://www.cnblogs.com/liyuelian/p/17224357.html

相关文章

  • day05-Lombok、SpringInitializer
    Lombok、Spring-Initializer1.Lombok1.1Lombok介绍Lombok的作用是:简化Javabean的开发,可以使用Lombok的注解让代码更加简洁Java项目中,很多没有技术含量又必须存在的......
  • k8s(Kubernetes)中yaml文件的各种 kind 类型
    k8syaml中文件内容一般有kind类型之分,每种类型有不同的功能(一般用---符号隔开)常见的kind类型1、EndpointsEndpoints可以把外部的链接到k8s系统中(可以理解为引用外部资......
  • 4_Day05
    29.关于Knife4j框架(续)在使用Knife4j时,应该通过相关注解,将API文档配置得更加易于阅读和使用,可以(续):@ApiModelProperty:添加在POJO类型的属性上,通过此注解的value属性可以......
  • Day05-设计模式之适配器模式
    设计模式之适配器模式适配器模式介绍适配器模式(AdapterPattern)是将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作......
  • Day05-Vue脚手架
    Vue脚手架学习目标:理解Node.js基本使用方法理解包资源管理器NPM的使用理解webpack的作用理解vue-cli脚手架(重点)Element-UI组件库1.vue的格式: newVue({......
  • day05
    publicclassDemo03{publicstaticvoidmain(String[]args){//整数扩展:进制二进制0b十进制八进制0十六进制0xinti=10;......
  • day05-功能实现04
    功能实现04后端:https://github.com/liyuelian/furniture-back-end.git前端:https://github.com/liyuelian/furniture-front-end.git9.功能09-添加家居表单前端校验9.1......
  • 后端存储—pv—pvc—pod yaml文件
    转载自:https://zhuanlan.zhihu.com/p/434209418======== 使用PV,PVC,NFS来做持久化存储的综合实例。(注意顺序,先搭建NFS服务器--定义PV-定义PVC-定义Pod)#vimnginx-p......
  • kubeadm 通过yaml文件初始化集群
    [root@k8s-master1~]#catkubeadm-config.yamlapiVersion:kubeadm.k8s.io/v1beta3bootstrapTokens:-groups:-system:bootstrappers:kubeadm:default-node-tokento......
  • python yaml变量替换
    使用场景:yaml文件的数据一般来说是写好的常量,每次读取再使用即可。但有些接口的数据每次都会变化则需要每次进行替换才能执行成功,或者当我们有多个相同字段的值都相同时......