728x90
@NotNull -> null만 걸러냄 ("", " " 같은 데이터는 허용)
@NotEmpty -> null, "" 걸러냄 (" " 데이터는 허용)
@NotBlank -> null, "", " " 데이터 전부 걸러낸다
해당 어노테이션들에 대해 간단히 정리하자면 위와 같다.
하지만, 블로그로 다시 한번 정리하는 이유는 실무에서 개발을 하다가 놓친 부분이 있었기 때문이다.
바로, 허용되는 변수의 타입!
@NotNull
해당 필드가 null 값을 허용하지 않음을 나타냄. 이 어노테이션을 사용하면 메소드나 매개변수, 필드 등에서 null 값이 들어오지 않도록 강제할 수 있음.
특징:
- 허용되는 타입: 모든 타입
- 설명: 해당 필드가 null이 될 수 없다는 것을 의미
public class User {
@NotNull
private String username;
...
}
@NotBlank
해당 문자열이 null이 아니고 비어 있지 않아야 함을 나타냄.
주로 문자열 입력값에 대한 유효성을 검사할 때 사용
특징:
- 허용되는 타입: CharSequence, String
- 바로 이 부분을 혼동했다. null이 아니고, 비어있지 않으면 된다는 생각에 int 타입 변수에 @NotBlank를 적용했고 보기좋게(..) 오류 발생! 앞으로는 헷갈리지 않도록 기록해둔다.
- 설명: 해당 문자열이 비어 있거나 공백 문자만으로 이루어져서는 안됨
public class Product {
@NotBlank
private String productName;
...
}
@NotEmpty
주로 컬렉션, 배열 등이 비어 있지 않아야 함을 나타냄
특징:
- 허용되는 타입: CharSequence, Collection, Map, 배열 등
- 설명: 해당 객체가 비어 있으면 안 됨
public class CheckList {
@NotEmpty
private List<String> items;
...
}
결론!
물론 클라이언트단에서의 유효성 검증 단계가 선행되지만, 서버단에서도 유효성 검증단계는 필요하다.
적절히 위의 어노테이션들을 활용하여 코드의 안정성을 높이고, 예기치 못한 상황을 방지할 수 있다.
728x90
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
DTO는 어떻게 관리하는게 좋을까? 에 대한 고민과 해결책 (0) | 2024.02.21 |
---|---|
Springboot 프로젝트에서 에러 메시지를 클래스로 관리하기 (0) | 2024.02.21 |
Spring | @Annotation 어노테이션은 어떻게 동작할까? (0) | 2023.10.29 |
Spring Security | 비밀번호 변경 기능 구현 하기 (0) | 2023.08.11 |
Spring Security | 회원정보 수정 기능 구현 (0) | 2023.08.11 |