SpringBoot 통합 Hibernate Validator 매개 변수 검증 기능 구현

앞 뒤 가 분 리 된 개발 모델 에서 백 엔 드 가 전단 에 들 어 오 는 매개 변 수 를 검증 하 는 것 은 필수 적 인 부분 이 되 었 다.그러나 다 중 매개 변수 의 경우 contrller 층 에 매개 변수 검증 을 더 하면 비대 해 보이 고 중복 코드 가 많다.여기 서 Hibernate Validator 를 인용 하여 이 문 제 를 해결 할 수 있 습 니 다.실체 류 에서 직접 매개 변수 검 사 를 하고 검증 에 실패 하면 오류 정 보 를 전단 에 직접 되 돌려 주 며 contrller 층 의 코드 량 을 줄 일 수 있 습 니 다.
1.xml Hibernate Validator 도입

<!--     -->
<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.1.5.Final</version>
</dependency>
2.주 해 를 통 해 실체 류 에서 매개 변수 검 사 를 실시 합 니 다.

@Data
public class UserModel {

  @NotNull(message = "        !")
  private String userName;

  @NotNull(message = "age   null!")
  @Range(min = 1, max = 888, message = "   1 888")
  private Integer age;

  /**
   *        
   */
  @NotNull(message = "     null!")
  private Date date;
}
여기 서 사용 하 는 매개 변수 검사 의 주 해 는@NotNull 과@Range 입 니 다.message 는 그때 우리 가 전단 에 보 낸 정 보 를 되 돌려 주 는 것 입 니 다.주 해 는 구체 적 인 의 미 는 다음 과 같 습 니 다.
  • @Null 주석 이 달 린 요 소 는 null
  • 이 어야 합 니 다.
  • @NotNull 주석 이 달 린 요 소 는 null
  • 일 수 없습니다.
  • @AssertTrue 에 주석 이 달 린 요 소 는 true
  • 여야 합 니 다.
  • @AssertFalse 주석 이 달 린 요 소 는 false
  • 여야 합 니 다.
  • @Min(value)에 주석 이 달 린 요 소 는 하나의 숫자 여야 합 니 다.그 값 은 지정 한 최소 값
  • 보다 커 야 합 니 다.
  • @Max(value)에 주석 되 어 있 는 요 소 는 하나의 숫자 여야 합 니 다.그 값 은 지정 한 최대 값
  • 보다 작 아야 합 니 다.
  • @DecimalMin(value)에 주석 이 달 린 요 소 는 하나의 숫자 여야 합 니 다.그 값 은 지정 한 최소 값
  • 보다 커 야 합 니 다.
  • @DecimalMax(value)에 주석 이 달 린 요 소 는 하나의 숫자 여야 합 니 다.그 값 은 지정 한 최대 값
  • 보다 작 아야 합 니 다.
  • @Size(max,min)주석 되 어 있 는 요소 의 크기 는 지정 한 범위 내 에 있어 야 합 니 다.
  • @Digits(integer,fraction)에 주석 이 달 린 요 소 는 하나의 숫자 여야 합 니 다.그 값 은 받 아들 일 수 있 는 범위 내
  • 여야 합 니 다.
  • @Past 에 주석 이 달 린 요 소 는 과거 날짜 여야 합 니 다
  • @Future 주석 이 달 린 요 소 는 미래의 날짜 여야 합 니 다
  • @Pattern(value)에 주석 이 달 린 요 소 는 지정 한 정규 표현 식 에 부합 해 야 합 니 다.
  • @Email 에 주석 이 달 린 요 소 는 이메일 주소 여야 합 니 다
  • @Length 주석 이 달 린 문자열 의 크기 는 지정 한 범위 내 에 있어 야 합 니 다
  • @NotEmpty 주석 이 달 린 문자열 은 비어 있어 야 합 니 다
  • @Range 에 주석 이 달 린 요 소 는 적당 한 범위 내 에서
  • 3.controller 층 의 방법 에@Valid 주 해 를 추가 합 니 다.
    
    @PostMapping("/testPost")public Object testPost(@RequestBody @Valid UserModel userModel, BindingResult result){  
                              
    		 if(result.hasErrors()){    for(ObjectError error:result.getAllErrors()){      
    						                        return error.getDefaultMessage();   
    					 } 
    											    
    				   }  
    		return userModel;
    }
    controller 층 은 실체 류 앞 에@Valid 주 해 를 추가 하면 데이터 검증 을 실현 할 수 있 습 니 다.여기 BindingResult 는 검사 할 때의 오류 정 보 를 저장 하고 오류 가 있 을 때 오류 정 보 를 전단 으로 되 돌려 줍 니 다.여기 서 Binding Result 를 사용 하지 않 을 때 콘 솔 은 MethodArgument NotValid Exception 을 보고 합 니 다.사용자 정의 이상 류 를 통 해 캡 처 한 다음 Binding Result 와 못 생 긴 if 판단 을 제거 할 수 있 습 니 다.
    4.사용자 정의 이상 클래스 캡 처 방법 Argument NotValidException
    
    @RestControllerAdvice
    public class GlobalExceptionAdvice {
    
      @ExceptionHandler(value = MethodArgumentNotValidException.class)
      public JsonData validException(MethodArgumentNotValidException e) {
        //  post        
        MethodArgumentNotValidException notValidException = e;
        String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage();
        return JsonData.buildError(msg);
      }
    }
    PostMan 을 사용 한 테스트 결 과 는 다음 과 같 습 니 다.

    구체 적 인 코드 는 제 gitee 에서 볼 수 있 습 니 다.springbootvalidator
    여기 서 SpringBoot 통합 Hibernate Validator 의 매개 변수 검증 기능 실현 에 관 한 글 을 소개 합 니 다.더 많은 SpringBoot 매개 변수 검증 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기