Spring MVC와 서블릿 컨테이너의 기본 스레드 처리 방식

이영재·2024년 10월 23일
0

Spring

목록 보기
6/15

Spring MVC 기반 애플리케이션에서 서블릿 컨테이너를 사용하는 ==스레드 관리는 매우 중요하다==
이는 Java 웹 애플리케이션이 동기적인 방식으로 HTTP 요청을 처리한다.

Servlet이란?

Java 기반의 웹 애플리케이션을 개발하기 위한 기술 중 하나로, 서버 측에서 클라이언트의 요청을 처리하고, 그에 대한 응답을 생성하는 Java 프로그램이다.

  • Servlet은 독립적으로 만들어 지지 않고 서블릿 컨테이너(Tomcat, Jetty 등)에서 실행된다.
    서블릿 컨테이너는 HTTP 요청 처리, 서블릿 관리, 스레드 관리 등 웹 애플리케이션 서버의 다양한 기능을 수행한다.
  • 서블릿 컨테이너는 서블릿의 생명주기를 관리하고 HTTP 요청을 처리하는 환경을 제공한다.

정리 하면 Servlet이란 ==**HTTP 요청을 처리하는 핵심 컴포넌트이다.==

서블릿 컨테이너 동작 방식 설명

  • 먼저 Spring boot는 내장 Tomcat 서버를 가지고 있다.
    - 이를 통해 별도의 톰캣 설치나 설정 없이 애플리케이션을 빠르게 구동할 수 있다.
    - Spring Boot 애플리케이션을 빌드하면 내장 톰캣 서버가 포함되어 실행 가능한 JAR 파일로 패키징된다.

예를 들어서 서블릿 컨테이너에서 HttpServlet을 생성하고, 이를 상속한 HelloServlet을 통해 비즈니스 로직을 처리 한다.

  • 서블릿 컨테이너는 애플리케이션이 시작될 때 HelloServlet과 같은 서블릿 인스턴스를 한 번만 생성한다.
  • 이 서블릿 인스턴스는 여러 요청에 대해 재사용한다.

내장 톰켓 서버는 요청에 따라 스레드 풀에서 Thread를 할당 해주는데 여기서 할당 받은 Thread는 서블릿 컨테이너에서 생성된 HelloServlet의 인스턴스에서 작업한다.

  • 따라서 스레드들이 동시에 하나의 서블릿 인스턴스에서 작업을 수행하므로, 공유 자원(예: 인스턴스 변수)을 사용할 때는 동시성 문제가 발생할 수 있다.

0개의 댓글

관련 채용 정보