해결된 질문
작성
·
348
1
우선 강의 정말 잘 보고 있습니다. 토비님.
일단 굉장히 초보적인 질문을 드리는 것 같아서 죄송스럽지만 자꾸 뭔가 하나 모자란 느낌이 자꾸 들어서 질문드립니다.
계속 강의를 보면서 서블릿 컨테이너를 띄우고 스프링 컨테이너도 띄우고 이 과정을 리팩토링해서 스프링 컨테이너만 띄운 뒤 서블릿 컨테이너와 디스패쳐 서블릿의 팩토리 메소드를 빈으로 바꾸는 과정까지 학습했습니다.
그런데 이번 강의에서 나오는 학습 테스트를 보면 별다른 빈을 등록하지 않으시고 스프링 컨테이너만 띄우셔서 커스텀 빈을 테스트하시는 것 같아 보였습니다.
여기서 궁금한 점이 스프링 컨테이너에 빈이 등록되고 라이프사이클이 끝나는 과정까지 서블릿 컨테이너를 아예 의존하지 않는게 맞나요?
사실 웹 프로덕트 코드를 구현하는 과정에선 반드시 서블릿 컨테이너가 있어야 파싱이 되기 때문에 실무에선 무쓸모일 고민 같지만 스프링 컨테이너가 얼마나 독립적으로 실행될 수 있는지 알면 좋을 것 같아서요...
답변 1
0
스프링 컨테이너 자체는 원래 서블릿 등 외부 기술에 의존하지 않습니다.
서블릿 없이도 스프링을 사용할 수도 있습니다. 독립적으로 실행되는 애플리케이션에 스프링을 포함시켜서 이용하기도 합니다.
다만, 스프링에서 웹 기술을 사용한다면 웹 관련 의존성이 생길 수가 있겠죠. 그래도 대부분 스프링이 추상화해놓은 방식을 쓰기 때문에 서블릿 없이도 실행해보며 테스트 가능합니다.
그럼에도 서블릿 컨테이너를 이용해서 스프링 컨테이너를 만들어 실행하는 방법이 가장 보편적이기 때문에 단순 테스트가 아닌 경우엔 서블릿 컨테이너까지 함께 띄워서 사용합니다.
좋은 답변 감사합니다!