본문 바로가기
Category/Spring

[SpringBoot] @Valid, Validator를 통한 유효성 검사

by developer__Y 2024. 2. 15.

기존의 스프링 레거시에서 Validator를 상속받아 직접적으로 validation 메소드 구현을 통해 유효성 검증 항목을 만들어서 사용했었다.

스프링부트에서 유효성 검사를 하기위해 지원하는 Validation을 통해 다양한 유효성 검사를 처리할수있다.

 

build.gradle에 의존성 추가

 

 

spring-boot-starter-validation 의존성을 추가해준다.

 

 

 

Spring.io의 공식문서에서 Validation 관련 문서를 찾아보면, @NotNull과 @Size등 다양한 유효성 검사항목이 있어

간편하게 어노테이션으로 사용할수있다.

원하는 유효성 검사 항목을 Entity 객체에서 설정해준다.

 

 

Controller @Valid 어노테이션

 

 

Form 양식을 통해 넘어오는 Post컨트롤러에서 파라미터로 받는 Board객체에 @Valid를 통해 유효성 검증을 하겠다고 해준뒤, BindingResult 객체를 추가해준다.

주의할 점은 @Valid 객체 바로 뒤에 선언 해주어야한다.

 

그리고, if 조건문을 통해 유효성 조건에 맞지않을때 hasErrors()메소드를 통해 view에서 원하는 처리를 할수있다.

 

 

부트스트랩을 활용하여 View에서 유효성 검사 효과 주기

 

 

부트스트랩5에서 유효성 검사를 위해 클래스명에  " is-invalid"를 추가해주면 유효성 체크 효과를 손쉽게 추가할 수 있다.

이전에 사용했던 thymeleaf의 classappend 기능을 통해서 서버에서 @Valid 를 통해 유효성 검증을 마친뒤,

보내오는 errors를 th:if 조건문으로 받아서,

서버에서 보내온 errors가 있으면 ( = 유효성 검증 실패시) 유효성 실패 css효과와 함께 메시지를 출력한다.

에러 메시지를 변경하고싶다면 @NotNull(message= " ")를 통해 원하는 메시지를 줄수있다.

 

 

유효성 검사를 할때, 자바스크립트를 통해 서버로 보내기전에 클라이언트단에서 처리를 하는 방법과

서버로 보낸뒤 서버에서 유효성 검사를 한뒤, error를 응답받아 처리를 하는 2가지 방법이있다.

상황에 맞게 적절하게 사용하면 될것 같다.