发布于2021-05-29 22:51 阅读(489) 评论(0) 点赞(3) 收藏(3)
上一篇讲了Springboot中参数校验优雅实践,本篇讲解如果自定义参数校验规则。在日常开发中Bean Validation 中内置的注解已经可以满足我们大部分需求,但是在处理一些特殊的校验规则时需要我们自定义注解实现。下面以日期格式校验规则为例,如何在springboot 中自定义注解实现参数的校验:
首先定义一个注解类:
- package com.validator.demo.api.valid;
-
- 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 org.apache.commons.lang3.StringUtils;
-
- @Target({ ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Constraint(validatedBy = { ValidDateValidator.class })
- public @interface ValidDate {
- String pattern() default "yyyy-MM-dd";
-
- String message() default StringUtils.EMPTY;
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
@Target —— 表示这个注解可以作用在什么地方
@Retention作用是定义被它所注解的注解保留多久
使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来@Documented注解只是用来做标识,没什么实际作用
@Constraint —— 表示我们判断逻辑的具体实现类是什么。
在定义一个具体的校验逻辑实现类:
- package com.validator.demo.api.valid;
-
- import java.text.ParseException;
-
- import javax.validation.ConstraintValidator;
- import javax.validation.ConstraintValidatorContext;
-
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.time.DateUtils;
-
- public class ValidDateValidator implements ConstraintValidator<ValidDate, String> {
-
- private String pattern = StringUtils.EMPTY;
-
- @Override
- public void initialize(ValidDate constraintAnnotation) {
- pattern = constraintAnnotation.pattern();
- }
-
- @Override
- public boolean isValid(String value, ConstraintValidatorContext context) {
- if (StringUtils.isBlank(value)) {
- return true;
- }
- try {
- DateUtils.parseDateStrictly(value, pattern);
- } catch (ParseException e) {
- return false;
- }
- return true;
- }
-
- }
在实体类中添加相应的注解
调用接口返回如下:
作者:举起你的手来
链接:http://www.javaheidong.com/blog/article/207707/27c6808ddbb2b3e3ab78/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!