@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  | 


