Spring/Spring_CoreTechnologies

SpringFrameWork CoreTechnition_section6_15부

whyWhale 2020. 11. 29.

Null-safty

  • @NonNull
  • @Nullable(null가능)
  • @NonNullapi
  • @NonNullFields

 

목적

  • 컴파일 시점에 최대한 NullPointerException을 방지하는 것.

 

 

--> null을 허용 불용 할 것인가의 툴을 지원을 받아 NullPointerException 미연에 방지 가는 한 것이다

 

해당 빈을 만들고 인자와 함수 전체에 annotation을 설정함.
해당 빈을 주입받고 인자에 널을 삽입.

아무런 표시가 뜨지 않고 저 밑줄에도 어떠한 내용이 나오지 않습니다. null을 주었는데 빨간 밑줄또한 전혀 보이지 않는 상황이다. 이러한 오류가 없다면 나중에 코드가 길어지기라도 한다면 nullpointer오류가 날 가능성이 매우 높다. 그리고 현재 아무런 위험 표시가 되어있지 않아 그냥 넘어가기 일쑤이다. 

 

 

해당 관련 오류를 출력하기 위해서는 약간의 설정이 필요하다.

 

settings -> compiler 에서 Configuartion annotations 들어가

nullable annotations 에 추가.

org.springframework.lang.Nullable

Notbull annotaions 에 추가.

org.springframework.lang.NonNull false

 

 

그 후에 빨간줄은 아니지만 밑줄에 이런 문구가 잡히기 시작한다.

 

Passing 'null' argument to parameter annotated as @NotNull 해석하자면 Notnull이 붙은것에 널을 넘기려 하고 있다는 뜻이다.

 

 

-만약 if 만약 정산된 동작을 할 수 있도록 인자에 null 아닌 정상 인자를 보내고 함수 자체가 null을 리턴하면 어떻게 될   까?

인자에 null이나닌 정상적인 값을 주고 해당 빈의 return을 null 로 변경한다면.

 

받는 쪽이 아닌 보낸쪽에 밑줄이 그어진다.

해당 빈에 빨간줄이 아닌 밑줄로써 표현이 되는 것을 볼수 있다.

 

null' is returned by the method declared as @NonNull 

@Nonnull이라는 애노테이션으로 해당 경고를 보여주고 있습니다.

 

package 에 대한 방법에서도 설정이 가능하다 .

@ NonNullapi -> 패키지 파일 만들어서 그 안에서 설정하는 것.

spring date Repostiory에서 애노테이션 사용할 수 있다.

 

해당 파일 맨 상단에다가 @NonNullapi라고 명시하면 이 패키지안에 모든 리턴과 인자에 논널을 설정하는 것입니다!

null을 허용하는 부분만 따로 설정을 하면 된다.

댓글