@Nonnull | @NonNull | @NotNull | @NotEmpty | @NotBlank | |
null 확인 | O | O | O | O | O |
"" 확인 | O | O | |||
" " 확인 | O | ||||
컴파일 시 확인 | O | O | X | X | X |
런타임 시 확인 | X | X(Lombok 가능) | O | O | O |
용도 | 변수, 파라미터 ,필드, 메서드 반환 값 등에 null 이 아님을 보장 | 변수, 파라미터 ,필드, 메서드 반환 값 등에 null 이 아님을 보장 | 변수, 파라미터 ,필드, 메서드 반환 값 등에 null 이 아님을 보장 | Collection, array, String[] 등에 null이 아니고, 비어있지 않음을 보장 | 문자열이 null이 아니고, 길이가 0이 아니며, 공백 문자가 아님을 보장 |
적용대상 | 모든 객체 타입 | 모든 객체 타입 | 모든 객체 타입 | 문자열, 컬렉션, 배열, 맵 등의 참조객체 | 문자열 |
특징 | 컴파일 타임 null 검사 목적 코드 분석 도구나 IDE에서 지원 | Lombok의 경우, null 체크 로직을 자동으로 생성Spring의 @NonNull은 null 안전성을 보장하기 위해 사용 및 특정한 검증 로직을 포함하지 않습니다. | Bean Valdation API(JSR-380)와 함께 사용. 런타임 시 검증 로직 추가 가능 | null 검사,길이가 0인지 검사 | null 검사와 빈 문자열 검사 및 문자열이 공백 문자로만 이루어 졌는지 검사 |
제공 패키지 | javax.annotation | Spring, Lombok, jetBrain | javax.validation.constraints | javax.validation.constraints | javax.validation.constraints |