[스프링 코어] 6. Null-Safety

5989 단어 SpringSpring
  • 스프링 프레임워크 5에 추가된 기능

  • 목적 : (툴의 지원으로) 컴파일 타임에 NullPointException을 미연에 방지

  • @

    • @NonNull

    • @Nullable

    • @NonNullApi (패키지 레벨 설정)

      • 간단 예)

        @NonNullApi
        package me.jinmin;
        
        import org.springframework.lang.NonNullApi;
    • @NonNullFields (패키지 레벨 설정)

  • 간단 예제)

    • \main\java\me\jinmin\EventService

      package me.jinmin;
      
      import org.springframework.lang.NonNull;
      
      public class EventService {
      
          @NonNull
          public String createEvent(@NonNull String name){
              return "hellp" + name;
          }
      }
      • null을 반환하면 안되고 null을 파라미터로 받으면 안된다.
    • \main\java\me\jinmin\AppRunner

      package me.jinmin;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.ApplicationArguments;
      import org.springframework.boot.ApplicationRunner;
      import org.springframework.stereotype.Component;
      
      @Component
      public class AppRunner implements ApplicationRunner {
      
          @Autowired
          EventService eventService;
      
          @Override
          public void run(ApplicationArguments args) throws Exception {
              eventService.createEvent(null);
          }
      }
      • 🔔주의할 점
        • eventService.createEvent(null); 줄에서 개발툴(IntelliJ)이 null에 오류를 감지해야한다. 하지만, 아무런 오류를 찾지 못한다.
        • 해결법 : Settings → Build, Execution, Deployment → Compiler → Configure annotations... 클릭 → Nullable annotations 박스의 "+" 클릭 → Nullable (org.springframework.lang) 추가 → NotNull annotations 박스의 "+" 클릭 → NonNull(org.springframework.lang) 추가하고 IntelliJ 재시작! → 오류 메시지가 뜬다.

좋은 웹페이지 즐겨찾기