springboot_自定义参数验证注解

springboot 自带注解(最下)能够满足日常大部分需求使用,如果在开发中需要自己自定义注解的话,操作姿势如下:

**
 * 需要在验证类 或者方法上 添加 @Valid 注解 用声明参数验证
 */
public String inserUser(@RequestBody @Valid Person person) {
实体类:
/**
 * 需要验证的参数 后面可以自定义错误提示
 * 创建ValidationMessages.properties 文件(可以被自动扫描到)
 * 错误提示可以写在该文件中
 */
@CheckValueValidation(message = "{NotNull.validation.Message}")

创建验证:

/**
 * Auther: ruoyu
 * Date: 19-2-19
 * Description: 自定义参数验证注解
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = CheckValueValidation.CheckValueConstraint.class) 
// 重要!   新建约束注解声明 并创建 验证逻辑类(可以多个 如验证String Integer) 
// CheckValueConstraint  这里为了简化 可以使用内部类实现 
public @interface CheckValueValidation {

    String message() default "参数为空";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    class CheckValueConstraint implements ConstraintValidator<CheckValueValidation, String> {

        @Override
        public void initialize(CheckValueValidation constraintAnnotation) {
        }
       
        /**
         * 参数验证逻辑
         * @param value 验证的参数
         * @param context
         * @return
         */
        @Override
        public boolean isValid(String value, ConstraintValidatorContext context) {
            return StringUtils.isNotBlank(value);
        }
    }
}

配置文件ValidationMessages.properties:
简单点也可以message=“名称不能为空”

#参数验证错误信息提示
NotNull.validation.Message=名称不能为空

Controller 使用
在这里插入图片描述
在这里插入图片描述
springboot 自带验证注解
@null 验证对象是否为空
@notnull 验证对象是否为非空
@asserttrue 验证 boolean 对象是否为 true
@assertfalse 验证 boolean 对象是否为 false
@min 验证 number 和 string 对象是否大等于指定的值
@max 验证 number 和 string 对象是否小等于指定的值
@decimalmin 验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax 验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size 验证对象(array,collection,map,string)长度是否在给定的范围之内
@digits 验证 number 和 string 的构成是否合法
@past 验证 date 和 calendar 对象是否在当前时间之前
@future 验证 date 和 calendar 对象是否在当前时间之后
@pattern 验证 string 对象是否符合正则表达式的规则
@Email 验证邮箱

实际例子:
@size (min=3, max=20, message=“用户名长度只能在3-20之间”)
@size (min=6, max=20, message=“密码长度只能在6-20之间”)
@pattern (regexp="[a-za-z0-9._%±]+@[a-za-z0-9.-]+\.[a-za-z]{2,4}", message=“邮件格式错误”)
@Length(min = 5, max = 20, message = “用户名长度必须位于5到20之间”)
@Email(message = “比如输入正确的邮箱”)
@NotNull(message = “用户名称不能为空”)
@Max(value = 100, message = “年龄不能大于100岁”)
@Min(value= 18 ,message= “必须年满18岁!” )
@AssertTrue(message = “bln4 must is true”)
@AssertFalse(message = “blnf must is falase”)
@DecimalMax(value=“100”,message=“decim最大值是100”)
@DecimalMin(value=“100”,message=“decim最小值是100”)
@NotNull(message = “身份证不能为空”)
@Pattern(regexp="^(\d{18,18}|\d{15,15}|(\d{17,17}[x|X]))$", message=“身份证格式错误”)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
# spring-boot-auth-starter 基于`spring boot web`的权限拦截验证 ## 重要声明 * 本分支由`1.0.7`为第一个版本,此版本默认提供`guava`存储令牌的功能 * 根据`guava`的缓存特性,提供了`2`种缓存方案(`LoadingCache、Cache`) * 如果需要使用`redis`存储方案,参考: [四、自定义缓存方案](#jump) ;或请直接使用`1.0.5`版本(有一些遗留`bug`) ## 一、使用前需要的准备 * maven中央仓库地址 [其他方式集成](https://search.maven.org/artifact/com.github.liuchengts/spring-boot-auth-starter) ``` <dependency> <groupId>com.github.liuchengts</groupId> <artifactId>spring-boot-auth-starter</artifactId> <version>1.0.7.4</version> </dependency> ``` * 声明一个接口来抽象具体的权限,可以继承 `com.boot.auth.starter.common.DefaultRolesConstant` ```java /** * 当前服务自定义的权限,权限为平级验证,不是包含关系 * 即 某资源 满足 user1或者user2即可 * <p> * <p> * extends DefaultRolesConstant 这个继承不是必须的 */ //todo 在这里自己定义权限角色 public interface RolesConstant extends DefaultRolesConstant { /** * user1 **/ String USER_1 = "USER1"; /** * user2 **/ String USER_2 = "USER2"; } ``` * 在项目的`application.yml`文件中,根据实际情况配置 `com.boot.auth.starter.common.AuthProperties` 值 ``` info: auth: tokenPrefix: test # 令牌存储前缀(必须) overdueTime: 9999999999 # 令牌过期时间,单位秒(必须) domain: localhost # 授权域名(必须) exclude: true # 账户令牌排他性,true 表示一个账号只会保留最后一次生成的令牌;false 表示一个账号可以对应多个令牌(非必须,默认 false) cacheInitialCapacity: 100 # guava 缓存的初始大小(非必须,默认 由guava 自行设置) cacheMaximumSize: 2000 # guava 设置缓存最大容量,超过之后就会按照LRU最近虽少使用算法来移除缓存项(非必须,默认 由guava 自行设置) cacheStats: true # guava 缓存统计(非必须,默认 false) loadingCache: false # guava 启用 loadingCache 作为缓存器(非必须,默认 false) ``` ## 二、使用示例 `使用示例demo` [spring-boot-auth-starter-example](https://github.com/liuchengts/spring-boot-auth-starter-example) * `@Auth` 权限注解(默认权限在 ```com.boot.auth.starter.common.DefaultRolesConstant```) * `@NoAuthGetSession` 不强制校验权限(默认不强制校验) * `@IgnoreLogin ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值