javax.validation
라이브러리는 위와 같은 어노테이션들을 지원해준다.
검증하고자 하는 객체의 필드에 위 어노테이션을 추가해주면
이 객체가 파라미터로 들어올 때 @Valid
를 추가해줌으로써 검증할 수 있다.
또 이 파라미터 바로 뒤에, Errors errors
파라미터를 추가해주면 검증 시 발견된 에러를 가지고 올 수 있다.
bindingResult.hasErrors()
메소드에서 true
가 반환된다.Responseentity
에 BAD_REQUEST
와 bindingResult.getAllErrors()
값을 넣고 생성하여 반환된다.기존에는 org.springframework.boot:spring-boot-starter-web
에서 Validation
을 자동으로 추가해줬지만 Spring boot 2.3부터 지원을 해주지 않는다.
그렇기 때문에 2.3버전 이상의 Spring boot를 사용할 때는 직접 javax.validation
와 org.hibernate.validator
를 추가해주어야 한다.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.10.Final</version>
</dependency>
프로젝트 생성 시 Validation
을 추가해주거나,
따로 gradle 또는 maven에 직접 추가해주어야 한다.
Spring boot가 관리하는 Validation을 사용하기 위해서는 spring-boot-starter-validation을 의존성으로 추가해주어야 한다.
위의validation-api
나hibernate-validator
를 사용하면@Pattern
과 같은 어노테이션constraints
가 제대로 동작하지 않는다.<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
"본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다."