정보처리기사

[Spring] 스프링 프레임워크의 동작 방식

dongkeonkim 2023. 4. 21. 13:21
반응형

서블릿(Servlet) 컨테이너

서블릿 컨테이너는 클라이언트의 요청을 받으면 스레드를 생성하여 서블릿을 실행합니다.

실행된 서블릿이 서버의 응답을 받아서 컨테이너에게 돌려주면, 이를 클라이언트에게 반환하는 역할을 합니다.

 

즉, 요청마다 새로운 스레드를 생성하여 서블릿을 실행하는 것입니다.

 

또한 서블릿의 멀티스레드 처리를 위해 동기화를 제공하고, 메모리 누수를 방지하기 위한 가비지 컬렉션을 수행하며 각 웹 애플리케이션마다 별도의 클래스로더를 사용하여 클래스 파일 충돌을 방지합니다.

 

뿐만 아니라 보안 기능도 제공합니다.

웹 애플리케이션 간의 서로 다른 보안 정책을 적용하여, 각 웹 애플리케이션의 보안을 유지하는 방식입니다.

 

서블릿

서블릿 컨테이너가 생성한 서블릿은 클라이언트의 요청에 맞는 매핑을 찾아 해당 매핑에 대한 프로그램을 실행합니다.

이후, 해당 로직의 결과를 받아 서블릿 컨테이너에게 돌려줍니다.

 

스프링 부트 프로젝트에서의 전체적인 매커니즘은 다음과 같습니다.

  1. 클라이언트가 특정 URL로 요청을 합니다.
  2. 스프링 부트의 내장 Tomcat이 요청을 받게 됩니다. 이것이 서블릿 컨테이너 입니다.
  3. Tomcat 이 서블릿을 생성하여 DispatcherServlet 서블릿으로 요청을 전달합니다.
  4. DispatcherServlet 은 요청을 처리할 핸들러(ex: Bean)를 선택하고 실행합니다.
  5. 처리한 결과를 다시 DispatcherServlet 에서 받아 응답을 생성합니다.
  6. Tomcat으로 전달하여 클라이언트에게 응답합니다.

 


 

반응형