springframework

o.s.w IoC 핵심기술. Null-Safety

Jungsoomin :) 2020. 9. 19. 15:28

Null-Safety..?

 

Null-Safety는 스프링 프레임워크 5 버전에서 추가된 기능이다.

  • 목적컴파일타임에 NPE 를 최대한 줄이기 위해서 만들어졌다.

  1. 널을 허용할지 허용하지 않을지를 어노테이션으로 지정

  2. 툴의 지원(IDE)을 받아 컴파일 타임에 NPE 발생을 미연에 방지할 수 있다.


@NonNull

개인적으로 사용해본적은 @Autowired 독학 시에 였다( 지금도 독..학이지만은.. ) 이외로는 Optional을 사용해보았었고.

 

@NonullNull을 허용하지 않는다.

 

 메서드 파라미터, 리턴타입 등에 사용할 수 있다.

  1. org.springframework.lang.NonNull

간혹 IDE에 런타임시 어노테이션이 지정이 안될 경우 작동하지 않는데, 이럴때는 어노테이션을 추가시켜주면 되겠다.

@Service
public class EventService {

    @NonNull
    public String createEvent(@NonNull String name){
        return "hello"+name;
    }

}

@Nullable

@NullableNull을 허용한다.

 

메서드 파라미터, 리턴타입 등에 사용할 수 있다.

  1. 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