前言:
现时小伙伴们对“java怎么跳出if判断”可能比较注重,小伙伴们都需要分析一些“java怎么跳出if判断”的相关文章。那么小编也在网上搜集了一些关于“java怎么跳出if判断””的相关内容,希望同学们能喜欢,看官们快快来了解一下吧!背景
当服务端接口一拿到前台的入参,你是不是上去就开始堆积if-else,十多行代码下去,发现全判断校验参数了,还没进入正常的业务逻辑。虽然功能没啥毛病,但看起来太冗长,被后来者看到,那是免不了一顿吐槽的!想要优雅一点吗?那就一起随小编一起来学习使用spring-boot-starter-validation进行参数校验!
优点controller层的代码看起来干净整洁spring-boot-starter-validation本身内置了一些注解可以直接使用,比如@NotNull,@NotBlank,@Size等支持自定义注解,灵活方便搭建pom引入依赖包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>常用注解
@NotNull@NotBlank@NotEmpty@Size自定义注解
/** * 时间属性格式校验 * @author:liyajie * @createTime:2022/1/20 10:38 * @version:1.0 */@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.PARAMETER,ElementType.FIELD})@Constraint(validatedBy = DateValidator.Validator.class)public @interface DateValidator { // 校验未通过时的返回信息 String message() default "日期格式不正确"; // 以下两行为固定模板 Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; /** * 预期日期格式 */ String expectValue(); @Slf4j class Validator implements ConstraintValidator<DateValidator, String> { private String expectValue; @Override public void initialize(DateValidator dateValidator) { expectValue = dateValidator.expectValue(); } @Override public boolean isValid(String value, ConstraintValidatorContext context) { boolean flag = false; /** * 为空直接通过,只做格式验证 */ if(Strings.isNullOrEmpty(value)){ return true; } try { Date date = DateUtil.formatStr2Date(value, expectValue); flag = true; }catch (RuntimeException e){ log.warn("DateValidator 日期格式不正确"); e.printStackTrace(); } return flag; } }}测试注意点
校验不通过时,会直接抛出异常,程序将停止执行下面的逻辑,这样是不合理的,所以我们要捕获异常,并进行处理,方案如下: 全局捕获异常,并统一返回:
/** * 全局异常处理 * @author: zhanglei * @version: 1.0 * @date: 2021/5/18 20:27 */@ControllerAdvice@Slf4jpublic class GlobalExceptionHandler { /** * 校验异常 * @author: liyajie * @date: 2022/1/20 13:07 * @param e * @return com.lyj.validates.common.R * @exception: * @update: * @updatePerson: **/ @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public R exceptionHandler(MethodArgumentNotValidException e) { log.error("exceptionHandler info:", e); BindingResult bindingResult = e.getBindingResult(); StringBuilder builder = new StringBuilder(); for (FieldError fieldError : bindingResult.getFieldErrors()) { builder.append(fieldError.getDefaultMessage()).append("!"); } log.error("message : {}",builder.toString()); return new R("500",builder.toString()); }}结束
如需获取源码,请关注后,私信小编,非常感谢!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java怎么跳出if判断 #java入参