Spring

서블릿 컨테이너와 Spring 컨텍스트

테니드2 2025. 4. 15. 11:41

1. 서블릿 컨테이너(웹 어플리케이션) -  예: Tomcat

  • 정의:
    웹 서버에서 자바 웹 애플리케이션(웹사이트)을 실행할 수 있게 해주는 프로그램입니다.
  • 주요 역할:
    • 웹 브라우저에서 들어오는 요청을 받아서, 서블릿(자바로 만든 웹 프로그램)에게 전달합니다.
    • 서블릿, 필터, 리스너 등 웹 관련 자바 객체의 생성과 생명주기를 관리합니다.
    • 예시: Tomcat, Jetty, Undertow 1. 서블릿 컨테이너(예: Tomcat)
      • 정의:
        웹 서버에서 자바 웹 애플리케이션(웹사이트)을 실행할 수 있게 해주는 프로그램입니다.
      • 주요 역할:
        • 웹 브라우저에서 들어오는 요청을 받아서, 서블릿(자바로 만든 웹 프로그램)에게 전달합니다.
        • 서블릿, 필터, 리스너 등 웹 관련 자바 객체의 생성과 생명주기를 관리합니다.
        • 예시: Tomcat, Jetty, Undertow 

2. Spring 컨텍스트(스프링 IoC 컨테이너)

  • 정의:
    Spring 프레임워크가 제공하는 "객체 관리 시스템"입니다.
    쉽게 말해, 프로그램에서 사용할 여러 객체(Bean)를 만들고, 서로 연결해주고, 필요할 때 꺼내 쓸 수 있게 관리해줍니다.
  • 주요 역할:
    • 개발자가 직접 객체를 만들고 연결하지 않아도, 설정에 따라 자동으로 객체를 생성하고 주입(Dependency Injection)합니다.
    • 객체의 생명주기(생성~소멸)도 관리합니다.
    • 예시: 회원 서비스, 주문 서비스 등 비즈니스 로직 객체들을 관리

 

- 실생활 예시

서블릿 컨테이너

  • 비유:
    "건물 관리자"
    • 한 건물(=웹 애플리케이션)을 짓고, 그 안에 여러 방(=서블릿, 필터 등)을 만들어줍니다.
    • 외부 손님(=웹 요청)이 오면, 건물 입구에서 안내해 각 방으로 보내줍니다.
    • 방의 청소, 유지보수(=생명주기 관리)도 담당합니다.

Spring 컨텍스트

  • 비유:
    "방 안의 집사"
    • 각 방(=서블릿, 컨트롤러 등) 안에서 필요한 가구(=객체, Bean)를 알아서 준비하고, 필요한 곳에 배치해줍니다.
    • 가구가 고장나면 교체하고, 필요 없으면 치웁니다.
    • 즉, 방(서블릿)이 제대로 일할 수 있도록 내부를 관리합니다.

 

그림 설명

 

[외부 요청]
     │
     ▼
┌─────────────────────────────┐
│      서블릿 컨테이너         │  ← 건물 관리자 (Tomcat 등)
│ ┌───────────────────────┐   │
│ │   Spring 컨텍스트     │   │  ← 방 안의 집사 (ApplicationContext)
│ │  (ApplicationContext) │   │
│ │   ┌───────────────┐   │   │
│ │   │  Bean1        │   │   │
│ │   │  Bean2        │   │   │
│ │   │  ...          │   │   │
│ │   └───────────────┘   │   │
│ └───────────────────────┘   │
└─────────────────────────────┘