본문 바로가기
Spring

2) Spring Boot Validation - Custom Annotation

by Gil Granger 2019. 12. 2.

 

Annotation을 만들어서 서버에 요청받았을때 유효성 검증을 하고 원하는 메세지를 줄 수 있도록 해보자.

 

다음은 Pattern Annocation 을 이용하여 원하는 패턴의 정규식만 검증하도록 만든 Annotation 이다.

 

 

이름에 대한 유효성 검증으로서 2~15문자수의 한글이나 영문만 가능하도록 적용한 예제이다.

다음과 같이 필드에 적용하여 테스트 해볼 수 있다.

TestDto

 

유효하지 않은 요청을 하게 되면 다음과 같이 에러메세지를 준다 ..!

에러메세지의 파라미터들은 필요에따라서 커스텀마이징을 하면 된다.(아래 1번 링크 참조)

 

Pattern이 아니라 직접 구현해서 검증하고 싶다면

  

@Constraint(validatedBy = {NameValidator.class} ) Annodation 를 사용하고

 

ConstraintValidator 인터페이스를 직접 구현하면 된다.

구현은 isValid메소드에서 검증하여 true/false를 반환하도록 하면 된다.

 

 

 


Spring Boot 환경에서

 

Hibernate-Validator 에는 각각의 Validation 에 대해 구현이 되어 있다.

 

ex) @Pattern

org.hibernate.validator.internal.metadata.core.ConstraintHelper.class 생성자

 

 

 

1) Validation 으로 인한 Exception 메세지 설정 및 Exception 발생 처리 과정 설명

https://granger.tistory.com/34

 

1) Spring Boot Validation - Annotation 메세지 & Exception 에러 발생시 동작 설명

@Vaild, @NotBlank annotaion을 이용한 Server Validation 사용 예제 응답 에러 메세지 @NotNull 예제:) { "timestamp":"2019-06-25T05:34:07.173+0000", "status":400, "error":"Bad Request", "errors":[ { "co..

granger.tistory.com

 

 

 

 

 

참고

https://www.baeldung.com/spring-mvc-custom-validator

https://stackoverflow.com/questions/40920191/validation-of-requestparam-using-custom-validcode-annotation-doesnt-work
https://blog.codeleak.pl/2012/03/how-to-method-level-validation-in.html

https://offbyone.tistory.com/282

댓글