🏕️상황
오류 화면을 보면 알겠지만 Controller에서 null 오류가 발생했다.
눈을 씻고 찾아봐도 코드상에 문제가 전혀 없었고, 심지어 복잡한 코드도 아니었음.
🗝️해결
위처럼 컨트롤러 필드에다가 저렇게 static을 사용해서 의존성 주입을 해버린 것이다....
왜 사용하면 안 되느냐?
- 멀티스레딩 문제:
static 필드는 클래스 수준에서 공유되므로 여러 스레드에서 동시에 접근할 수 있습니다. 웹 애플리케이션은 다수의 요청을 동시에 처리하는 환경에서 동작하므로 멀티스레딩 문제가 발생할 수 있습니다. 이로 인해 데이터 일관성 문제나 경합 상태 등이 발생할 수 있습니다. - 의존성 주입(Dependency Injection) 문제:
Spring과 같은 프레임워크에서는 의존성 주입(DI)을 통해 필드를 주입하는 것을 권장합니다. static 필드를 사용하면 의존성 주입이 어려워질 수 있으며, 테스트와 같은 상황에서 코드를 테스트하기 어려워집니다. - 테스트 가능성(Testability) 문제:
static 필드는 테스트하기 어려울 수 있습니다. 특히, 모의(Mock) 객체를 사용하여 테스트할 때 static 필드의 값이 변경되지 않도록 보장하기 어려울 수 있습니다. - 메모리 누수(Memory Leak) 문제:
static 필드는 애플리케이션이 실행되는 동안 계속해서 메모리를 차지하므로 메모리 누수의 원인이 될 수 있습니다.
그래서 static을 지워줬더니 해결...~~!!!