JSR303数据校验和多环境配置

386 阅读3分钟

JSR303数据校验

简介 JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。

作用:使用JSR303检验,可以保证数据的正确性

使用步骤

  1. 在类上添加@Validated,开启JSR303校验
  2. 在你要进行检验的数据上添加注解,常用的参数,我放在下面了

常用参数


@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 对象是否符合正则表达式的规则

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

来个小实验证明一下 实体类

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


@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "e")
@Validated
public class EmailTest {

    @Email(message = "输入错误")
    private String msg;
    private Integer id;

}

application.yaml配置

e:
  msg: asdasda
  id: 2

**注意点:**如果application.yaml配置中有配置多余的配置,属性注入的配置一定要放在最前面,不然属性会配置不了,会为null

测试类

package com.example;

import com.example.pojo.EmailTest;
import com.example.pojo.People;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot02ConfigApplicationTests {

    @Autowired
    EmailTest email;

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

}

测试结果:

image.png

多环境配置

yaml的多文档块

server:
  port: 8080

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

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

配置文件加载的位置(4个)

image.png

优先级关系:图中序号所标注

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件

拓展

我们还可以通过spring.config.location来改变默认的配置文件位置