우리는 다양한 값을 입력받아 컨트롤러로 보내는 작업을 많이 한다.
이때 프론트에서 뿐만 아니라 백엔드에서도 입력값을 확인할 필요가 있다. 이때 Spring에서 javax.validation.constraint와 org.hibernate.validator.constraints을 import하여 필요한 valid를 쉽게 적용할 수 있다.
여기에는 다양한 validation 목록이 있는데
| Anotation | 의미 |
|---|---|
| @NotNull | Null값만 아니면 다른 어떤 값이 들어와도 된다. |
| @NotEmpty | Collection,Map,Array등이 Null값이 아니고 사이즈가 0보다는 커야한다. |
| @NotBlank | String이 Null이 아니고 Length>0이여야 한다. |
| @Positive | 0초과 여야만 한다. |
| @PositiveOrZero | 0이상이기만 하면 된다. |
| @Negative | 0미만이여야 한다. |
| @NegativeOrZero | 0이하여야 한다. |
| @Past or @PastOrPresent | 날짜 형식에 많이 쓰이며 오늘 이전인지 확인하는데 사용된다. |
이런 다양한 Annotation은 어디서 사용될까?
클래스의 필드멤버의 유효성을 검사할 때 요긴하게 사용할 수 있다.
먼저 Valid하고자 하는 멤버위에 해당 어노테이션들을 붙인다.
public class Order {
@NotBlank(message="name is required");
private String name;
@Positive
private Integer count;
}
이 값을 Controller에서 받아 검증하려면 다음과 같이 Controller를 작성하면 된다.
@PostMapping
pulbic String test(@Valid Order order,Error errors){
if(errors.hasErrors()){
에러 있을 때 로직
}
}
위 코드를 간단히 간단히 설명하자면 @Valid를 통해 필드 멤버들을 검증한다. 그후 만약 에러가 나 있다면 Errors.hasErrors()를 통해 해당 여부를 확인하고 수정한다.