반응형
스프링 프레임워크 5에 추가된 Null 관련 애노테이션
org.springframework.lang.*
- @NonNull
- @Nullable
- @NonNullApi (패키지 레벨 설정)
- @NonNullField (패키지 레벨 설정)
목적
- (툴의 지원을 받아) 컴파일 시점에 최대한 NPE(NullPointerException)을 방지하는 것
- null 체크를 하지 않아서 생기는 NPE 방지
@NonNull
- org.springframework.lang.NonNull 사용
- 메소드 파라미터에 붙이는 경우 -> null 값이 들어오지 못하도록 방지
@Service
public class EventService {
@NonNull // (1)
public String createEvent(@NonNull String name){ // (2)
return "hello " + name;
}
}
- (1) Null을 리턴하는 것을 허용하지 않음
- (2) name이 null인 것을 허용하지 않음
@Nullable
public class Person {
@Nullable // (1)
public String name;
public void getName() {
return name; // (2)
}
}
- (1) name 값을 null을 허용하겠다라는 의미
- (2) name이 null이 허용되므로 null이 리턴되는 것을 인지하고 코드를 짜야한다. (IDE 수준에서 경고를 줌)
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
EventService eventService;
@Override
public void run(ApplicationArguments args) throws Exception {
String event = eventService.createEvent("seunghan");
System.out.println(event);
}
}
만약 IDE에서 알림창이 안뜬다면 아래 설정 참고
더보기



cmd + , 를 이용해 설정에 들어가서


notnull - annotation Configure annotaion을 보면 springframework에 대한 Nullable이 추가가 안되어있다.


org.springframwork.lang - Nullable, NonNull을 추가해준다.
AppRunner에서 argument로 null을 주려하면 이렇게 메세지가 뜨게된다.
Return타입도 NonNull이 적용이 되었기 때문에, 메세지가 발생한다.
REFERENCES
반응형