Null Check
- 개발을 하다보면, NPE 는 자주 등장하는 에러이다.
- 그럼 어떻게하면 NPE(Null Pointer Exception) 을 피할 수 있을까?
- 아래와 같이 Null Check 를 잘 해주면 된다.
public void method(String request) {
if(request == null) return;
System.out.println(request.toUpperCase());
}
- 위와 같이 null 여부를 체크해주면 NPE 를 피할 수 있다. -> 하지만 개발자가 실수로 null 체크를 하지 않았을 때, 에러의 위치를 정확히 파악하기 힘들 수도 있다.
- 이러한 문제를 해결하기 위해서는 Spring 에서는 @NonNull, @Nullable 애노테이션을 제공한다.
@NonNull
- 해당 값이나 함수 등이 Null이 아님을 나타내는 애노테이션이다.
- org.springframework.lang.NonNull 를 사용한다.
메서드 파라미터에 붙이는 경우
- null 이라는 데이터가 들어오는 것을 사전에 방지한다.
public void method(@NonNull String request) {
if(request == null) return; // 경고 메시지가 보인다.
System.out.println(request.toUpperCase());
}
- @NonNull 이라고 설정한 파라미터에 null 을 체크하면 경고 메시지가 보인다.
프로퍼티에 붙이는 경우
@NonNull
public String request = "Request";
public void method() {
request = null; // 경고 메시지가 보인다.
}
메서드에 붙이는 경우
@NonNull
public String method() {
return null
}
- 위와 같이 null 을 리턴하는 경우 경고 메시지가 보인다.
@Nullable
- @NonNull과 반대로 해당 데이터가 null일 수 있음을 명시한다.
@Nullable
public String request = "request";
public void method(){
System.out.println(request.toUpperCase());
}
- 해당 어노테이션이 붙은 값을 사용하는 경우 null check를 항상 수행하도록 경고 메시지가 보인다.
REFERENCES