-
톰캣, 스프링, 서블릿.. 프로젝트가 어떻게 돌아가는가공부 2024. 10. 23. 03:28
예전부터 매우 헷갈렸다.
@Controller @Service @Repositry 과 JPA 를 이용해서 프로젝트가 돌아가게 코딩할 수 있지만
이게 어떻게 가능한거지??
톰캣이란? 스프링이란? 서블릿이란?
정확한 정의 보다는 내가 이해한 내용을 정리하겠다
서블릿
GPT :
서블릿(Servlet) 은 자바에서 웹 애플리케이션을 만들기 위해 제공되는 서버 측의 자바 클래스입니다. HTTP 요청을 처리하고 응답을 생성하는 역할을 하며, 주로 동적 웹 페이지를 만들거나 웹 서비스를 제공할 때 사용됩니다. 서블릿은 자바 EE(Java Enterprise Edition, 현재 Jakarta EE)의 일부로, 서블릿 컨테이너 또는 애플리케이션 서버(예: Tomcat, Jetty)에서 실행됩니다.가장 멋진 서블릿은 DispatcherServlet 이다. 이름부터 서블릿이다. HTTP 요청에서 request, response 그리고 적절한 컨트롤러로 라우팅 같은 역할을 한다.
다른 서블릿에는 JSPServlet, FileUploadServlet 등등 있는데 당연히 다른 역할들을 해줄 것이다.
어떤 요청에 어떤 서블릿을 사용할지는 WEB-INF.web.xml 에서 설정할 수 있다고 하는데
요즘에는 Spring 에서 DispatcherServlet 이 자동으로 등록되고 이녀석이 만능이라서 따로 설정 없이 다 가능한 듯 하다.
스프링
GPT :
스프링(Spring) 은 자바 기반의 애플리케이션 개발을 위한 오픈 소스 프레임워크로, 특히 엔터프라이즈 애플리케이션 개발에 많이 사용됩니다. 스프링은 간단한 자바 애플리케이션부터 대규모 엔터프라이즈 시스템까지 다양한 범위의 애플리케이션을 지원하며, 애플리케이션의 복잡성을 줄이기 위해 객체 지향적인 설계 원칙과 다양한 모듈화된 기능을 제공합니다.스프링의 아주 멋진 기능들에 대해서는 알고있을 것이다. 의존성 주입(DI), AOP, 트랜잭션 관리 등등..
이 글에서는 스프링 프로젝트가 어떻게 돌아가는 지 집중하겠다.
클라이언트에서 무슨 url 로 어떤 request 로 Get으로? Post 로? 어떻게 요청했는지
적절한 컨트롤러로 라우팅해주고 응답까지 해결해주는 녀석이 위에서 설명한 DispatcherServlet 이다.
아주 핵심적인 서블릿이다. 얘가 있어서 모두 돌아가는 듯 하다. Spring 에서 만들어놓은 것이다.@SpringBootApplication 이 어노테이션만 쓰면 DispatcherServlet 이 자동으로 등록된다. 편하다!
톰캣
톰캣은 서블릿 컨테이너 이다. 서블릿을 실행하고 관리한다.
추가- 서블릿 컨테이너의 역할 외에도 웹 서버 역할도 담당한다고 한다 (정적 컨텐츠 처리)
- 서블릿 컨테이너를 실행하건 웹 애플리케이션 서버 역할 이라고 보면 될거같다 (동적 컨텐츠 처리)
- 동적 컨텐츠는 서블릿이나 JSP 를 실행하여 처리
외장 톰캣에 Spring 애플리케이션을 war 파일로 배포하면 톰캣이 DispatcherServlet 을 생성하고 관리해줄 것이다.
스프링에는 기본적으로 내장 톰캣이 있어서 jar 파일로 배포할 수도 있다.
그러니까 톰캣 위에서 스프링이 돌아가고, 스프링의 핵심적 서블릿인 DispatcherServlet 을 톰캣이 관리하기 때문에
HTTP 요청을 보내면 잘 작동한다고 보면 될것같다.