springboot学习[版本2.6.2]yaml语法day1-2

181 篇文章 3 订阅
20 篇文章 2 订阅

为什么要用yaml

SpringBoot默认使用两种配置文件 :

  1. application.properties
  2. application.yaml

yaml的优势

它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件

语法

  1. 使用缩进表示层级关系。
  2. 缩进时不允许使用 Tab 键,只允许使用空格。
  3. 缩进的空格数不重要,但同级元素必须左侧对齐。
  4. 大小写敏感。

常用类型写法

username : zhangsan
password : 123456

字符串

字符串是不用引号的
但是也是可以使用的,其中单引号和双引号有不同的用途

单引号字符串

特殊字符按原来形式输出,即转义

username: 'zhangsan \n lisi'

输出:

zhangsan \n lisi
双引号字符串

特殊字符不转义

username: "zhangsan \n lisi"

输出:

zhangsan
lisi

yaml对象

1.普通写法(推荐)

user :
 username : zhangsan
 password : 123456

2.行内写法

user : { username : zhangsan , password : 123456 }

yaml数组

1.普通写法(推荐)

username : 
 - zhangsan
 - lisi

2. 行内写法

username : [ zhangsan ,lisi ]

yaml多文档结构

使用—(三个 - )进行文档之间的分割

---
webuser:
 username : zhansan
 password :123456
---
admin:
 username : lisi
 password : 456789

yaml嵌套

其实yaml的嵌套和多数我们使用过的嵌套像json文件都是一样的思想

user :
 username : zhangsan
 password : 123456
 habits : 
  - drink
  - run
  - play video game

IDEA中创建yaml文件

新建里是找不到的,直接新建带后缀名的.yaml就行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实例使用(必看)

实例目录

在这里插入图片描述

导入依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>day2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>day2</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!--        用于对@ConfigurationProperties注解进行在yaml中提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.6.2</version>
        </dependency>
<!--        用于省去写get和set方法toString方法-->
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

主要使用的到新增的

用于对@ConfigurationProperties注解进行在yaml中提示
<!--        用于对@ConfigurationProperties注解进行在yaml中提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.6.2</version>
        </dependency>
用于省去写get和set方法toString方法

<!--        用于省去写get和set方法toString方法-->
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>

创建实体类User

package com.example.day2.entity;

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

import java.util.List;
import java.util.Map;

/**
 * 加载yaml配置文件
 * 使用@ConfigurationProperties注解
 * 注解中需要有prefix = " XXX "
 * 来帮助Spring Boot对yaml需要加载的配置进行定位(映射)
 * 并且必须要将类注册为容器中的组件,才能用@ConfigurationProperties注解功能
 */
@Component
@ConfigurationProperties(prefix = "user")
@Data
@ToString
public class User {
    private String userId;
    private String username;
    private String password;
    private int age;
    private double height;
    private double weight;
    private boolean status;
    private Map<String,Object> address;
    private List<Object> habits;
    private UserAuthorities userAuthorities;


}

UserAuthorities辅助类

package com.example.day2.entity;

import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class UserAuthorities {
    private int userLevel;
    private String authority;


}

Controller类

package com.example.day2.controller;

import com.example.day2.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ControllerTest {
    @Autowired
    User user1;
    @RequestMapping("/")
    public User user(){
        return user1;
    }

}

yaml中的数据

user:
  userId: 001
  username: zhangsan
  password: 123456
  age: 18
  height: 175.25
  weight: 110.667
  status: true
  address:
    city: shanghai
    area: qingpu
  habits:
    - play video game
    - music
    - run
  userAuthorities:
    userLevel: 2
    authority: 购物7

最后启动执行类访问本机端口

在这里插入图片描述成功拿到数据

注解解释

1.@Component

实例化组件
并且必须要将类注册为容器中的组件,才能用@ConfigurationProperties注解功能
所以和@ConfigurationProperties连用

2. @ConfigurationProperties

加载yaml配置文件
使用@ConfigurationProperties注解
注解中需要有prefix = " XXX "
来帮助Spring Boot对yaml需要加载的配置进行定位(映射)
在pom.xml中导入如下依赖

<!--        用于对@ConfigurationProperties注解进行在yaml中提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.6.2</version>
        </dependency>

3.@Data和@ToString

本注解来源于lombok,用于简化代码,省去开发人员书写get(),set(),toString()方法进行自动生成,提高开发效率
其中包含@ToString注解,用于自动生成toString方法

  1. @Setter自动添加类中所有属性相关的 set 方法
  2. @Getter自动添加类中所有属性相关的 get 方法
  3. @Builder使得该类可以通过 builder (建造者模式)构建对象
  4. @RequiredArgsConstructor生成一个该类的构造方法,禁止无参构造
  5. @ToString重写该类的toString()方法
  6. @EqualsAndHashCode重写该类的equals()和hashCode()方法
  7. @NoArgsConstructor无参构造器
  8. @AllArgsConstructor全参构造器
  9. @Data则涵盖所有
    需要添加如下依赖再pom.xml中
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>

注意点:使用@Data后无法重写toString所以 才需要再用@ToString来进行重写

4.@Autowired

自动装配
可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值