【Spring Boot】6.Yaml语法

1.简介

YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)
这种语言以数据做为中心,而不是以标记语言为重点!

2.对比

SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的

  • application.properties
    • 语法结构 : key=value
server.port=8081
  • application.yaml
    • 语法结构 : key:空格 value
 server:
 	  prot: 8080
键值对
name: zhang

对象(子集开头必须要空格)
student:
	name: zhang
	age: 21
	
行内写法
student: {name: zhang,age: 21}


数组
pets:
  - cat
  - dog

pets: [cat,dog]

3.注入配置文件

这是yaml文件强大的地方!之后笔记会提到

4.测试

4.1 创建SpringBoot项目

在这里插入图片描述

4.2 导入Pom

<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
</dependency>
//在yamal中,自定义类没有提示。则需要一下导入
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
</dependency>

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

4.3 编写实体类

4.3.1 Person

package com.node.demo.bean;

import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

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

@ConfigurationProperties(prefix = "person")
@Component
@Data
@ToString
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

4.3.2 Pet

package com.node.demo.bean;

import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class Pet {
    private String name;
    private Double weight;
}

4.4 编写application.yaml

person:
  userName: zhangsan
  #userName: 'zhangsan \n 李四':单引号会将\n作为字符串输出,单引号改变了转义字符(转转变不转)
  #userName: "zhangsan \n 李四":双引号会将\n作为换行输出
  boss: false
  birth: 2019/12/12 20:12:33
  age: 18
  pet:
    name: tomcat
    weight: 23.4
  interests: [篮球,游泳]
  #interests:
  #  - 篮球
  #  - 足球
  #  - 18
  animal:
    - jerry
    - mario
  score:
    english:
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {first: 128,second: 136}
  salarys: [3999,4999.98,5999.99]
  allPets:
    #sick: 生病的宠物
    sick:
      - {name: tom}
      - {name: jerry,weight: 47}
    #health: 健康的宠物
    health: [{name: mario,weight: 47}]

4.5 编写Controller

package com.node.demo.controller;

import com.node.demo.bean.Person;
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;
    }
}

4.6 测试结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值