본문 바로가기
백엔드/Spring

[spring error] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

by 작은소행성 2021. 10. 26.

 

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

 

쿼리에 null값이 들어가서 생기는 오류이다.

값은 있는데 쿼리에 왜 null값이 들어가는지 찾아보다가 

Controller 에서 Service 의 의존성을 주입하지 않았다는 것을 알았다. 

@Autowired 를 사용해 의존성 주입을 해줌으로써 문제를 해결하였다. 

    @Autowired
    private SaveService SaveService;

 

 

Autowired 란

@Autowired 란 필요한 의존 객체의 타입에 해당하는 Bean을 찾아 주입하는 것이다. 

빈을 주입하는 방법에는 3가지 타입이 있다. 

  • 생성자 주입
  • setter 주입
  • 필드 주입

 

 

의존성 주입에서 생성자 주입을 권장한다.

이유로는 순환참조를 방지할 수 있고 테스트 코드 작성이 용이하며

final로 선언이 가능해 객체를 변경 불가능하게 하기 때문이다.

 

 

단일 생성자인 경우에는 어노테이션을 사용하지 않아도 되지만

생성자가 2개 이상인 경우에는 @Autowired 어노테이션을 사용해야 한다. 

 

 

반응형