Null-Safety..?
Null-Safety는 스프링 프레임워크 5 버전에서 추가된 기능이다.
-
목적은 컴파일타임에 NPE 를 최대한 줄이기 위해서 만들어졌다.
-
널을 허용할지 허용하지 않을지를 어노테이션으로 지정
-
툴의 지원(IDE)을 받아 컴파일 타임에 NPE 발생을 미연에 방지할 수 있다.
@NonNull
개인적으로 사용해본적은 @Autowired 독학 시에 였다( 지금도 독..학이지만은.. ) 이외로는 Optional을 사용해보았었고.
@Nonull은 Null을 허용하지 않는다.
메서드 파라미터, 리턴타입 등에 사용할 수 있다.
-
org.springframework.lang.NonNull
간혹 IDE에 런타임시 어노테이션이 지정이 안될 경우 작동하지 않는데, 이럴때는 어노테이션을 추가시켜주면 되겠다.
@Service
public class EventService {
@NonNull
public String createEvent(@NonNull String name){
return "hello"+name;
}
}
@Nullable
@Nullable 은 Null을 허용한다.
메서드 파라미터, 리턴타입 등에 사용할 수 있다.
-
org.springframework.lang.Nullable
@Autowired 시에 @Nullable 을 붙이면 해당 주입객체가 존재하면 주입하고 아니면 null을 값으로 주게 된다.
즉, 무조건적으로 호출한다는 이야기이다. ( required 속성을 false 로 주면 의존이 존재하지 않을시 아예 호출하지 않는 것으로 기억한다. )
@NonNullApi, @NonNullFields
새로알게된 부분이다.
패키지에 null 관련 제약조건을 건다.
해당패키지와 모든 하위 패키지에 전부 @NonNull을 붙이게 된다.
pagekage-info.java 파일을 열어 적용시켜주면 된다.
@NonNullApi
package me.soomin.demospring51.test;
import org.springframework.lang.NonNullApi;
'springframework' 카테고리의 다른 글
JsonView (0) | 2020.10.14 |
---|---|
Web Mvc (0) | 2020.10.08 |
o.s.w IoC 핵심기술. @AOP (0) | 2020.09.19 |
o.s.w IoC 핵심기술. 프록시 기반의 AOP (0) | 2020.09.17 |
o.s.w IoC 핵심기술. AOP 개요. (0) | 2020.09.17 |