이름에서 볼 수 있듯이 뭔가 검증하는 거다.
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation'
의존성 추가하고
@Getter
@RequiredArgsConstructor
public class User {
@Email
@NotBlank
@NotNull
private String Email;
}
이런 객체가 있고 이런 객체를 다른 곳에서 @Valid붙여서 사용해주면 객체가 메서드를 통과하기 전에 validation을 수행한다.
public ResponseEntity signup(@Valid @RequestBody User user) throws UnknownHostException, MessagingException {
userService.signup(User);
return new ResponseEntity(HttpStatus.OK);
}
이 메서드를 통과하기 전에 null값이 아닌지, 빈값이 아닌지, 이메일 형식인지를 체크하고 들어오게 되는 것이다.
만약
검증에 오류가 있다면
MethodArgumentNotValidException를 반환한다.
기본적으로 컨트롤러에서 @RequestBody와 함께 사용된다.
참고로
@NotNull: 해당 값이 null이 아닌지 검증함
@NotEmpty: 해당 값이 null이 아니고, 빈 스트링("") 아닌지 검증함(" "은 허용됨)
@NotBlank: 해당 값이 null이 아니고, 공백(""과 " " 모두 포함)이 아닌지 검증함
@AssertTrue: 해당 값이 true인지 검증함
@Size: 해당 값이 주어진 값 사이에 해당하는지 검증함(String, Collection, Map, Array에도 적용 가능)
@Min: 해당 값이 주어진 값보다 작지 않은지 검증함
@Max: 해당 값이 주어진 값보다 크지 않은지 검증함
@Pattern: 해당 값이 주어진 패턴과 일치하는지 검증함