@NotNull, @NotEmpty, @NotBlank 차이

리브리버·2024년 3월 8일
0

TIL

목록 보기
14/17

백엔드 개발을 하다보면 클라이언트로부터 전달받는 내용들을 가지고서 지지고 볶고 하고싶은 일들을 하기 시작한다.

그렇다면 이 전달받은 내용들이 매우 중요할텐데 ...

언제 사용 ?

이 값들을 로직이 시작하기 전 미리 검증해주는 작업들을 값을 받아올때 (api, controller) 혹은 값을 저장할때 (엔티티 필드값 등) 에서 하고자 할때 사용할 수 있습니다.

그렇다면 각 특징이 무엇이고 어떻게 될까요 ?

특징

  • @NotNull : 반드시 값이 존재해야 한다. 즉 Null만 허용하지 않는다는 것입니다
    - "", " " 는 허용
  • @NotEmpty : 반드시 값이 존재해야 한다. 길이, 크기가 0보다 커야한다. 즉 null, 빈값인 ""는 안된다는 것입니다.
    - " " 는 허용함, 길이가 1이 넘으므로
  • @NotBlank : 반드시 값이 존재해야 한다. 공백문자를 제외한 길이가 0보다 커야한다. 즉 null, "", " " 모두 안됩니다.

예시

위 내용을 어노테이션만 달아준다고 하여 바로 적용이 되는것은 아닙니다.

해당 클래스를 사용하는 곳에 @Valid를 아래와 같이 붙여줘야 동작합니다.

public class CarCreateRequest{
	@NotBlank
    private String name;
    
    @NotEmpty
    private Long price;
    
    ...   
}
public class CarAPI {
...

@PostMapping
public ResponseEntity CreateCar(@RequestBody @Valid CarCreateRequrest request) {
return ...
}
...

0개의 댓글