yaml配置

suaxi
2020-12-22 / 0 评论 / 95 阅读 / 正在检测是否收录...

yaml配置文件

application.properties

  • 语法结构:key=value

application.yaml

  • 语法结构:key:空格 value
yaml

YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

基本语法:

# k=v

name: test

#对象
student:
  name: test
  age: 3

#行内写法
student1: {name: test,age: 3}

#数组
students:
  -test1
  -test2
  -test3

students1: [test1,test2,test3]
注入配置文件

1、导入配置文件的依赖

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

2、yaml配置文件

person:
  name: test
  age: 3
  happy: false
  birth: 2020/12/22
  map: {k: v,k1: v1}
  list:
    -code
    -girl
  dog:
    name: test
    age: 3

3、实体类

package com.sw.pojo;

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

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

/**
 * @Author suaxi
 * @Date 2020/12/22 10:38
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component //注册Bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> map;
    private List<Object> list;
    private Dog dog;

}

@ConfigurationProperties的作用:

将配置文件中配置的每一个属性的值,映射到这个组件中,参数prefix = "person",将配置文件中person下的所有属性一一对应

补充:通过properties注入属性

@PropertySource(value = "classpath:application.properties")
properties与yaml对比
@ConfigurationProperties@value
功能批量注入配置文件中的属性需单个一一指定
松散绑定
SPEL表达式
JSR303校验
复杂类型封装

松散绑定:yaml中写的是last-name,实体类中写的是lastName,值依然能注入,yaml中 - 后面的第一个字母默认大写

JSR303校验:JSR是Java Specification Requests的缩写,意思是Java 规范提案。

使用时须在实体类前加上注解 @Validated //JSR303校验

JSR303校验.png

0

评论 (0)

取消