개발일지/2023_한이음

🚨ERROR - [spring boot] java.lang.NullPointerException : null

기억지기 개발자 2023. 9. 12. 11:43

🏕️상황

실제 오류 이미지

오류 화면을 보면 알겠지만 Controller에서 null 오류가 발생했다.

눈을 씻고 찾아봐도 코드상에 문제가 전혀 없었고, 심지어 복잡한 코드도 아니었음.

 

 

🗝️해결

문제의 코드....

위처럼 컨트롤러 필드에다가 저렇게 static을 사용해서 의존성 주입을 해버린 것이다....

 

왜 사용하면 안 되느냐?

  1. 멀티스레딩 문제: 
    static 필드는 클래스 수준에서 공유되므로 여러 스레드에서 동시에 접근할 수 있습니다. 웹 애플리케이션은 다수의 요청을 동시에 처리하는 환경에서 동작하므로 멀티스레딩 문제가 발생할 수 있습니다. 이로 인해 데이터 일관성 문제나 경합 상태 등이 발생할 수 있습니다.
  2. 의존성 주입(Dependency Injection) 문제: 
    Spring과 같은 프레임워크에서는 의존성 주입(DI)을 통해 필드를 주입하는 것을 권장합니다. static 필드를 사용하면 의존성 주입이 어려워질 수 있으며, 테스트와 같은 상황에서 코드를 테스트하기 어려워집니다.
  3. 테스트 가능성(Testability) 문제: 
    static 필드는 테스트하기 어려울 수 있습니다. 특히, 모의(Mock) 객체를 사용하여 테스트할 때 static 필드의 값이 변경되지 않도록 보장하기 어려울 수 있습니다.
  4. 메모리 누수(Memory Leak) 문제:
    static 필드는 애플리케이션이 실행되는 동안 계속해서 메모리를 차지하므로 메모리 누수의 원인이 될 수 있습니다.

 

그래서 static을 지워줬더니 해결...~~!!!