SpringBoot03_数据检验、Profile切换

本文详细介绍了SpringBoot中如何利用JSR303进行数据验证,包括使用@Validated注解确保数据正确性,以及常见的验证注解。此外,还探讨了SpringBoot的多环境配置切换,讲解了如何通过profile激活不同环境配置,如通过application-{profile}.yaml文件管理测试和开发环境。最后,解释了配置文件的加载顺序和位置,强调了yaml和properties配置的优先级问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSR303数据检验

如何使用

Springboot中可以用**@validated**来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;

@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated  //数据校验
public class Person {

    @Email(message="邮箱格式错误") //name必须是邮箱格式
    private String name;
}

image-20200505185912706

使用数据校验,可以保证数据的正确性

常见数据检验注解
@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
    
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
    
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.

日期检查
@Past       验证 Date 和 Calendar 对象是否在当前时间之前  
@Future     验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则

.......等等
除此以外,我们还可以自定义一些数据校验规则

多环境切换

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境

多配置文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本

例如

application-test.yaml 代表测试环境配置

application-dev.yaml 代表开发环境配置

#application-test.yaml
server:
  port: 8083

但是Springboot并不会直接启动这些配置文件,它默认使用application.properties(application.yaml)主配置文件

我们需要通过一个配置来选择需要激活的环境:

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到test下的配置了;
spring:
  profiles:
    active: test

这样运行主程序后 只能通过8083端口进行访问

不同环境的配置会合并默认配置后,一起生效。针对默认配置中已存在的项,当前配置的会覆盖

yaml的多文档块

上面这种实现多个环境切换一般是用于properties的配置文件,使用yaml可以不用去配置多个文件

使用“—”来分割


#选择要激活那个环境块
spring:
  profiles:
    active: test
    
---
server:
  port: 8081
spring:
  profiles: dev #配置环境的名称


---

server:
  port: 8083
spring:
  profiles: test #配置环境的名称

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!

配置文件加载位置

如果同时存在properties和yaml两种格式的配置文件同时存在 读取properties格式的配置文件

SpringApplication从application.properties以下位置的文件加载属性并将其添加到Spring中Environment:

一个/config当前目录的子目录(当前项目的config目录下的配置文件)

当前目录(当前项目下的配置文件)

类路径/config包(resources包下的config包的配置文件)

类路径根(resources包下的配置文件)

等价于下面4个访问顺序

  1. file:./config/ (./表示当前目录)
  2. file:./
  3. classpath:/config/
  4. classpath:/

该列表按优先级排序(在列表较高位置定义的属性会覆盖在较低位置定义的属性)

image-20200505193142369

当使用来配置自定义配置位置时spring.config.location,它们将替换默认位置。例如,如果spring.config.location使用值配置classpath:/custom-config/,file:./custom-config/,则搜索顺序将变为以下内容:

  1. file:./custom-config/
  2. classpath:custom-config/

或者,当使用来配置自定义配置位置时spring.config.additional-location,除默认位置外,还会使用它们。在默认位置之前搜索其他位置。例如,如果classpath:/custom-config/,file:./custom-config/配置了的其他位置,则搜索顺序变为以下内容:

  1. file:./custom-config/
  2. classpath:custom-config/
  3. file:./config/
  4. file:./
  5. classpath:/config/
  6. classpath:/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值