springboot中YAML使用

本文详细介绍了YAML的基本概念、语法和数据类型,并通过一个Spring Boot的示例展示了如何使用YAML配置文件进行对象绑定。内容涵盖了@Component、@ConfigurationProperties等注解的用途,以及@Autowired自动注入。此外,还提供了Person和Pack类的定义,以及对应的application.yml配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 基本概念 

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

  • 基本语法

  1. key:value; kv之间有空格
  2. 大小写敏感
  3. 使用缩进表示层级关系
  4. 缩进不允许使用tab,只允许使用空格
  5. 缩进空格数不重要,要与相同层级元素左对齐
  6. '#'表示注释
  7. ' '和" " 表示字符串内容会被 转义/不转义
  • 数据类型

1.字面量:单个的、不可再分的值。如:date、boolean、string、number、null

 k: v

2.对象:键值对的集合。如:map、hash、set、object

行内写法: k: {k1: v1,k2: v2,k3: v3}

3.数组:一组按照一定次序排列的值。如 array、list、queue

行内写法:k: [v1,v2,v3]

  •   示例

Person.java

package com.example.springboot02.bean;

import lombok.Data;
import lombok.ToString;
import org.springframework.stereotype.Component;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

@ConfigurationProperties(prefix = "person")
@Component

@ToString
@Data
public class Person {
    private String userName;
    private Boolean npc;
    private Date birth;
    private Integer age;
    private Pack pack;
    private String[] interests;  //兴趣爱好
    private List<String> cv;
    private Map<String, Object> statistics; //面板属性
    private Set<Double> gcd; //技能冷却时间
    private Map<String, List<Pack>> allPacks;
}

分析:@Component注解声明Person 类是Spring管理的一个bean;通过@ConfigurationProperties注解加载properties文件内的配置,通过prefix属性指定的properties的配置前缀person绑定,后期修改application.yml即可。

Pack.java

package com.example.springboot02.bean;

import lombok.Data;
import lombok.ToString;
import java.util.Map;

@ToString
@Data
public class Pack {
    private String name;
    private String specification; //武器属性
}

application.yml

controller

package com.example.springboot02.controller;

import  com.example.springboot02.bean.Person;
import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class helloController {

    @Autowired
    Person person;

    @RequestMapping("/person")
    public Person person(){
        return person;
    }
}

分析:@Autowired注解自动注入该配置;@RestController是@Controller和@ResponseBody的组合,@Controller声明是一个控制器,@ResponseBody将返回值放在response体内。@RequestMapping配置url和方法之间的映射

运行,访问http://localhost:8080/person

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值