Java教程

【狂神springboot笔记】SpringBoot配置文件

本文主要是介绍【狂神springboot笔记】SpringBoot配置文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Spring官方文档:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html (这里和老师一起看的2.1.6的,但是实际项目用的最新的2.6.6)

1、yaml文件格式

# yaml文件对空格要求十分严格,没有空格可能就报错
# yaml文件可以注入到配置类中
# 普通的key-value
name: wcy
# 对象
student1:
  name: wcy
  age: 24
# 对象行内写法
student2: {name: wcy,age: 3}


# 数组
pet1:
  - cat
  - dog
  - pig
# 数组行内写法
pet2: [cat,dog,pig]



server:
  port: 8080

2、yaml文件注入配置类

首先看没有yaml是怎么配置属性的

Dog类

package com.wcy.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dog {
    @Value("旺财")
    private String name;
    @Value("3")
    private Integer age;
}

测试类

package com.wcy;


import com.wcy.pojo.Dog;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
class Springboot01ConfigApplicationTests {


    @Autowired
    private Dog dog;

    @Test
    void contextLoads() {
        System.out.println(dog);
    }
}

有了yaml之后呢?

application.yaml

person:
  name: wcy
  age: 3
  happy: false
  birth: 2022/4/09
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 旺财
    age: 3

Person类,@ConfigurationProperties(prefix = "person") 通过这个注解和yaml配置文件参数一一绑定

package com.wcy.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;


@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

这个注解会报红(不影响使用),按找提示加依赖就好了

编译器弹出提示:

3、yaml格式的优势

* 松散绑定:yaml配置文件中和配置类中的属性不一定要完全一致,例如first-name和firstName也是可以复赋值的,比较智能
* SpEl就是 ${properties配置文件中属性名},这个yaml也用不上
* JSR303简单的来说就是通过注解规定属性的格式,如果实际值不符合会报错,如下图

Person类—JSR303数据校验

@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
@Validated // 数据校验
public class Person {
    private String name;
    @Email
    private String email;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}


4、多配置文件

当有多个配置文件需要切换的时候,可以使用下面这样的方法

applicationcontext.yaml:

spring:
  profiles:
    active: test
---
dog:
  name: 旺财
spring:
  profiles: dev
---
dog:
  name: 富贵
spring:
  profiles: test

console:
Dog(name=富贵)

也可以使用不同的yaml文件,applicationcontext-test.yaml这样命名就可以了,具体参考官方文档;
https://docs.spring.io/spring-boot/docs/2.6.6/reference/htmlsingle/#features.external-config.files.multi-document

这篇关于【狂神springboot笔记】SpringBoot配置文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!