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