
여기서 컨텍스트 = 컨테이너? 에 대한 의문이 들었다.
➡️ “컨테이너가 어떻게 동작할지 정해주는 규칙과 환경”
1. 어떤 빈을 사용할지
2. 어떤 설정(properties, config 등)이 필요한지
3. 어떤 조건에서 어떤 객체를 쓸지
이런 정보들이 있음.
※ 하지만 스프링에서는 ApplicationContext가 스프링의 컨테이너로서 빈을 관리하기 때문에 두 용어가 겹치는 경우도 많다/
AppConfig 클래스에서 정의된 설정 로드@Service)@Repository)즉, ApplicationContext는 공통 비즈니스 로직, 서비스, 리포지토리 계층 등 웹과 무관한 범용적인 빈들을 관리
@Controller)즉, WebApplicationContext는 DispatcherServlet과 연동되어 웹 요청과 관련된 빈(ViewResolver, HandlerMapping 등)을 담당
즉, ApplicationContext는 스프링의 기본 컨테이너로 빈을 관리하는 역할을 하고,
WebApplicationContext는 이를 확장해 웹 환경에서 ServletContext 접근, DispatcherServlet 연동, ViewResolver 설정 등 웹에 특화된 기능을 담당하는 컨테이너입니다.
➡️ “그 컨텍스트(환경, 규칙)를 기반으로 실제 객체를 만들고 관리하고 처리해주는 시스템”
1. 입력(요청)이 오면
2. 어떤 빈을 꺼내서
3.어떤 식으로 응답을 줄지를
4. 컨텍스트의 설정에 따라 결정해서 실행.
🔬 Application Scope
특징
- 웹 애플리케이션당 하나의 인스턴스
ServletContext와 유사한 생명주기
📌 핵심: 웹 애플리케이션 전체에서 공유되는 데이터 저장용생성되는 객체들
- 애플리케이션 전역 설정
- 캐시 매니저
- 전역 카운터
- 공유 리소스 관리자
- 애플리케이션 이벤트 리스너
🔬 Singleton Scope
특징
- 스프링 컨테이너당 하나의 인스턴스(빈)만 생성
- 기본 스코프
- 상태를 공유하므로 주의 필요
📌 핵심: 스프링 컨테이너가 관리하는 객체의 "하나뿐인 인스턴스"생성되는 객체들
- ApplicationContext
- Spring Core Containers
- Service Layer Beans
- Repository Layer Beans
- Configuration Beans
- Spring Security Configurations
사용자 요청
↓
[웹서버] (예: Apache, Nginx)
↓ (요청을 WAS로 전달)
[WAS = 웹 애플리케이션 서버]
└─ 여기부터는 톰캣 같은 '웹 컨테이너'가 담당
↓
[서블릿 컨테이너] (톰캣의 핵심)
↓
[DispatcherServlet 호출 (스프링 진입점)]
↓
[HandlerMapping → Controller → Service → Repository 등 스프링 로직 수행]
↓
[ViewResolver → 응답 생성 (HTML, JSON 등)]
↓
[DispatcherServlet이 응답 전달]
↓
[웹 컨테이너 → 웹서버 → 사용자 브라우저]