SpringBoot中yaml和properties的使用

138 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

配置文件要么为application.properties,要么为application.yaml

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

image.png

yaml的基本语法:

  • #表示注释内容

  • 大小写敏感 (属性&值)

  • key: value ( kv间要用空格 ——> k:(空格) v )

  • 缩进表示层级,缩进不用tab键,用空格表示,同一层级只需要左边对齐即可

  • 字符串可以不加引号,若要加:' '的内容会被转义 ,“ ” 的内容不会被转义

我们原始时候使用@value()进行赋值

image.png

1.现在我们使用yaml进行赋值

  1. 首先在yaml文件中赋值
person:
  name: 王小懒
  age: 24
  birthday: 2021/12/12
  lists:
    - code
    - music
    - girl
  maps: {k1: g1,k2: g2}
dog:
  name: 旺财
  age: 3
  1. 然后在实体类中进行绑定
package com.whx.springboot02study.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

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

@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;

    private int age;
    private boolean happy;
    private List<Object> lists;
    private Date birthday;
    private Map<String,Object> maps;
    private Dog dog;
}

通过@ConfigurationProperties(prefix = “person”)与yaml文件进行绑定完成取值。

2. 使用properties赋值

image.png

加载配置文件然后通过@value(${})进行赋值

image.png

使用properties文件时可能会遇到乱码问题,以下为解决方式

image.png

${random.int}诸如此类

  • 配置yml和配置properties都可以获取到值,强烈推荐yml
  • 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下@value
  • 如果说,我们专门编写了一个JavaBean来和配置文件进行映射,就直接使用@configurationProperties,不要犹豫!

3.JR303验证

Java API 规范 (JSR303) 定义了 Bean 校验的标准 validation-api,但没有提供实现。hibernate validation 是对这个规范的实现,并增加了校验注解如 @Email、@Length 等。

Spring Validation 是对 hibernate validation 的二次封装,用于支持 spring mvc 参数自动校验。接下来,我们以 spring-boot 项目为例,介绍 Spring Validation 的使用。

导入依赖:

       <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.16.Final</version>
        </dependency>

例子:

image.png

4. 多环境配置

SpringBoot多环境配置,选择激活哪一个配置文件

4.1 首先用properties文件演示

spring.profiles.active=

等于号后写的是配置文件的名字

image.png

4.2 其次用yaml文件进行演示

image.png

相比之下,yaml文件的优势非常明显。