springboot自定义参数校验注解,笔记

1.自定义参数校验注解

直接看代码,没有过多解释

1.接口

package com.battcn.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

import com.battcn.interceptor.IsMobileInterceptor;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER,ElementType.FIELD})
@Constraint(validatedBy = IsMobileInterceptor.class)
public @interface IsMobile {
	
	String value() default "^[1](([3|5|8][\\d])|([4][5,6,7,8,9])|([6][5,6])|([7][3,4,5,6,7,8])|([9][8,9]))[\\d]{8}$";
	
	String message() default "手机号格式不正确";
	
	Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

2.实现

package com.battcn.interceptor;


import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import com.battcn.annotation.IsMobile;

public class IsMobileInterceptor implements ConstraintValidator<IsMobile,Object> {

    // 保存flag值
    private String value;
    private String message;

    @Override
    public void initialize(IsMobile flagValidator) {
        // 注解内配的值赋值给变量
        this.value = flagValidator.value();
        this.message = flagValidator.message();
        
    }

    @Override
    public boolean isValid(Object value1, ConstraintValidatorContext constraintValidatorContext) {
    	System.out.println(">>>>>>>>>>"+value);
    	System.out.println(">>>>>>>>>>"+value1);
    	System.out.println(constraintValidatorContext.toString());
        
        // 阻止默认提示语值(message)
    	// constraintValidatorContext.disableDefaultConstraintViolation();
        // 改变默认提示语值,重新设置
    	// constraintValidatorContext.buildConstraintViolationWithTemplate(message + "不可为空").addConstraintViolation();
    	if(value1 == null)return true;
        Boolean isFlag = false;
        if (value1.toString().matches(value)){
            isFlag = true;
        }
        return isFlag;
    }

}

3.测试 userentity

package com.battcn.entity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.battcn.annotation.IsMobile;

import lombok.Data;

@Data
public class UserEntity {
	
	private String userName;
	
	private String id;
	
	private String sex;

	private String age;
	
	@IsMobile(message="手机号")
	private String mobilePhone;
	
	private String salary;
	
}

4.控制层

package com.battcn.controller;

import com.battcn.annotation.CacheLock;
import com.battcn.entity.UserEntity;

import javax.validation.Valid;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * BookController
 *
 * 
 */
@RestController
@RequestMapping("/books")
public class BookController {


    @CacheLock(prefix = "books")
    @GetMapping
    public String query() {
        return "提交成功";
    }
    
    
	@RequestMapping(value = "search", method = RequestMethod.GET)
	public String search(@Valid UserEntity entity) throws Exception {
		try {
			return "sucess";
		} catch (Exception e) {
			throw new Exception(e);
		}
	}

}

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值