spring自定義註解校驗字段格式

在我們開發項目過程中,肯定會遇到對存儲字段的格式進行驗證操作的,比如ip,手機號等,這樣我們一般都是加個if判斷,如果需要驗證的地方很多,我們就要加很多if判斷,這樣會代碼重複的地方也就多了起來,看起來也不好看,我們如何才能更加精煉我們的代碼呢,自定義註解可以解決這些個問題,我們只需要在實體bean上加個註解就可以對我們的格式進行驗證,方面,顯得高大上。下面是代碼實現:

定義註解:

@Target(ElementType.FIELD) //指定作用於字段上
@Constraint(validatedBy = IpV4ValidRule.class) // 指定驗證規則類
@Retention(RetentionPolicy.RUNTIME) // 項目運行時可以被發現
public @interface IpValid {
    String message() default "IP格式不正確"; //默認提示信息
    Class<?>[] groups() default {}; //分組
    Class<? extends Payload>[] payload() default { };
}

 實現ConstraintValidator<T,T>,這個類就可以被spring管理起來,可以在裏面添加規則驗證邏輯

public class IpV4ValidRule implements ConstraintValidator<IpValid,String> {
    @Override
    public void initialize(IpValid constraintAnnotation) {}

    @Override
    public boolean isValid(String str, ConstraintValidatorContext constraintValidatorContext) {
        if(ObjectUtils.isEmpty(str)){
            return false;
        }else if(str.matches(Regexs.IP_REGEX)){
            return true;
        }
        return false;
    }
}

實體bean需要驗證的字段上加個@IpValid即可

public class Event{

    @IpValid
    private String ip;
}

 

在控制層添加@Validated 或者@Valid即可實現驗證 

 @ApiOperation("保存")
    @PostMapping
    public Event save(@Validated @RequestBody Event event) {
		return eventService.save(event);
    }

簡單吧~.~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章