프로젝트를 진행하면서 @Valid를 통해 "입력을 했는가 안했는가"를 판단하기 위해 여러가지 설정을 살펴보았습니다. @Blank, @Empty, @Null을 통해 가능하다고 하는데 도통 처음에는 잘 이해가 되지 않았습니다. null, "", " " 3개의 차이를 이해하는 것이 관건입니다. 그래서 확실히 정리하기 위해서 글을 씁니다. 다음사전에서 해석을 참고했습니다.
1. @Null
null은 쉽습니다. 아예 존재자체를 안합니다. 따라서 null의 유무만 확인하면 됩니다. 보통 사용하는 @NotNull 은 말 그대로 null만 아니면 됩니다. null 빼고 전부 통과!
2. @Empty
여기서부터 조금 헷갈리기 시작합니다. 그래서 사전을 찾아보게 되었습니다. 설명을 본다면 [] 안에 그릇, 차, 배, 승객 등등 다양한 예시가 나옵니다. 그말은, 껍데기는 있지만 그 안에가 아무것도 들어있는게 없이 비어있다는 뜻입니다. null은 껍데기도 뭐도 정말 아무것도 없는 無인 것에 비해 조금 낫습니다. 따라서 ""는 empty입니다. 대신 껍데기만 있기 때문에 길이는 0이어야 합니다!
3. @Blank
Blank는 공백이라고 나와 있습니다. 써 넣지 않은, 기입되지 않은 등의 설명이 개발자 입장에서도 우리가 유효성을 검사하는 바와 가장 맞아떨어지는 설명입니다. 이 때 공백이라는 빨간 글씨처럼 " "은 Blank의 범위에 포함됩니다. 즉, 꼭 기입되어야 하는 정보가 있을 때 null, "", " "을 모두 포함하니 필수 필드를 @NotBlank로 설정해서 방지해야 합니다.
null | "" | " " | |
@NotNull | false | true | true |
@NotEmpty | false | false | true |
@NotBlank | false | false | false |
우리는 비어있거나 기입하지 않은 것을 주로 확인하기 때문에 @Not~을 더 많이 사용 할 것입니다. 우리가 만든 폼에 값을 입력하지 않고 넘어갔다고 여겨지는 경우에는 예외를 발생시키기 위해서 @NotBlank를 써야 최대한 많이 체크할 수 있습니다.
'Spring' 카테고리의 다른 글
네이버 지역검색 API를 활용한 맛집 List 제작 - (2) (0) | 2021.08.22 |
---|---|
네이버 지역검색 API를 활용한 맛집 List 제작 - (1) (0) | 2021.08.22 |
Swagger (0) | 2021.08.21 |
Spring Framework란? 기본 핵심 개념 정리 (0) | 2020.11.10 |
순수 java 코드를 이용한 Spring-MVC 등록 과정 (2) | 2020.11.05 |