1、配置文件
配置文件
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
- application.properties
 语法结构 : key=value
- application.yaml
 语法结构 :key:空格 value
- 配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
1.1、yaml语法
  YAML是 “YAML Ain’t a Markup Language” (YAML不是一种置标语言)的递归缩写。
   yaml最大的优势是能够进行复杂类型封装, 使用@value就不支持
#对象、Map(键值对)
person:
  age: 16
  tel: 123456
  name: lucius
#行内写法
#person: {name: qinjiang,age: 3}
#数组 List Set
pets:
  - cat
  - dog
  - pig
#行内写法
#pets: [cat,dog,pig]
#占位符引用其他属性的值,如果不存在可以设置默认值
person:
  age: ${random.int}、${random.long}、${random.int(10)}
  tel: 123456
  name: ${person.hello:hello}_旺财
#此时由于person.hello这个参数值不存在,因此默认值就是**hell0_旺财**
1.2、注入配置文件使用
第一步: 在SpringBoot的主程序的同级目录下建包,只有这样,主程序才会对这些类生效 ; 我们建一个pojo的包放入我们的Person类。
package com.lucius.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "person")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    private int age;
    private int tel;
    private String name;
}
注意事项:
- 
@ConfigurationProperties作用: 
 将配置文件中配置的每一个属性的值,映射到这个组件中;
 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
 参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
- 
ConfigurationProperties中的参数就是我们创建的yaml配置文件名称 
- 
@Component //注册bean 
第二步: 编写yaml配置文件
person:
  age: 16
  tel: 123456
  name: lucius
注意事项:
- 每个变量名称必须和实体类中的一致
第三步: 在自动生成的测试类中进行调用
@SpringBootTest
class Springboot01HellospringbootApplicationTests {
 
    @Autowired
    Person person;
    
    @Test
    void contextLoads() {
        System.out.println(person);
    }
}
注意事项:
- @Autowired注解表明是自动装配的
2、JSR303数据校验
  spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式
使用方法:
package com.lucius.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
@Component
@ConfigurationProperties(prefix = "person")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Validated//数据校验
public class Person { 
    private int age;
    private int tel;
    private String name;
    @Email
    private String email;
}
  如此一来,email这个参数就只能是email格式,否则会报错
  使用数据校验,可以保证数据的正确性;
JSR303中包含的校验注解:
| Constraint | 详细信息 | 
|---|---|
| @Null | 被注释的元素必须为 null | 
| @NotNull | 被注释的元素必须不为 null | 
| @AssertTrue | 被注释的元素必须为 true | 
| @AssertFalse | 被注释的元素必须为 false | 
| @Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 | 
| @Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 | 
| @DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 | 
| @DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的 | 
| @Size(max, min) | 被注释的元素的大小必须在指定的范围内 | 
| @Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 | 
| @Past | 被注释的元素必须是一个过去的日期 | 
| @Future | 被注释的元素必须是一个将来的日期 | 
| @Pattern(value) | 被注释的元素必须符合指定的正则表达式 | 
| 被注释的元素必须是电子邮箱地址 | |
| @Length | 被注释的字符串的大小必须在指定的范围内 | 
| @NotEmpty | 被注释的字符串的必须非空 | 
| @Range | 被注释的元素必须在合适的范围内 | 
其中:
@Pattern(value)	    被注释的元素必须符合指定的正则表达式
是最核心的一个,有了这个注解,我们可以检查参数的类型
3、多环境配置
方法一: 配置多个配置文件
在此默认的是application.yaml,那当我们需要使用其他配置的时候怎么办呢?很简单,只需要在默认配置文件中将其他环境激活:
spring:
  profiles:
    active: env
方法二:使用一个yaml文件进行设置
注意使用—进行分隔
server:
  port: 8081
spring:
  profiles:
    active: env
---
server:
  port: 8082
#配置环境的名称
spring:
  profiles: dev
---
server:
  port: 8083
spring:
  profiles: prod  
4、配置文件加载位置优先级
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
- 优先级1:项目路径下的config文件夹配置文件
- 优先级2:项目路径下配置文件
- 优先级3:资源路径下的config文件夹配置文件
- 优先级4:资源路径下配置文件(默认)
 优先级由高到底,高优先级的配置会覆盖低优先级的配置;
来源:CSDN
作者:Lucius_Keep_Going!
链接:https://blog.csdn.net/weixin_43125502/article/details/104522516