[스프링]Null-safety

정태규·2023년 3월 17일
0

spring

목록 보기
7/14

Null Safety

kotlin이나 다른 언어들은 null을 잘 다룰 수 있도록 되어 있지만, java 같은 경우는 잘 되어 있지 않다.

	public void method(String request){
    	System.out.println(request.toUpperCase());
    }

위와 같은 메서드에서 request가 null 값일때 NullPointerException이 발생할 것이다. 그런데 문제는 Exception이 발생한 위치가 정확하게 나오지 않고 엉뚱한 곳에서 위치가 찍힐때가 많다는 것이다.

Null safety를 이용하면 null이 어디서 나타났는지 항상 정확한건 아니지만 비교적 쉽게 찾을 수 있다.
완벽한 방법은 아니지만 IDE(intellij,Eclipse)에서 경고를 표시함으로써 1차적인 문제를 방지하고,정확한 에러 위치를 확인할 수 있도록 돕는다.

그러면 어떻게 실제로 NUll safety를 구현하는지 알아보자.

@NonNullAnotation

  • 해당 값이나 함수 등이 Null이 아님을 나타내는 어노테이션
  • org.springframework.lang.NonNull사용
  • 메서드 파라미터에 붙이는 경우: null이라는 데이터가 들어오는 것을 사전에 방지함
public void method(@NonNull String request){
	if(request == null) return;
    
    System.out.println("");
}
  • property에 붙이는 경우: Null을 저장하면 경고
@NonNull
public String request = "REQUEST";

public void method(){
	System.out.println("request.toUpperCase()");
    
    request = null;
}
  • 메서드에 붙이는 경우:null을 리턴하는 경우 경고, 응답값을 저장하거나 활용하는 쪽도 NonNUll이라고 신뢰하고 사용
@NonNull
public String method(){
	System.out.println(request.toUpperCase());
    
    return null;
}

@Nullable Annotation

  • @NonNull과 반대로 해당 데이터가 null일 수 있음을 명시함
  • 해당 어노테이션이 붙은 값을 사용하는 경우 null check를 항상 수행하도록 경고

0개의 댓글