티스토리 뷰
Spring Framework: applicationContext.xml과 spring-servlet.xml의 차이점 완벽 정리
codeqna 2024. 11. 25. 07:36Spring Framework: applicationContext.xml과 spring-servlet.xml의 차이점 완벽 정리
스프링 프레임워크에서 applicationContext.xml과 spring-servlet.xml은 각각의 역할과 범위가 다릅니다. 이 두 설정 파일의 차이점을 이해하는 것은 스프링 기반 웹 애플리케이션을 효과적으로 구성하는 데 중요합니다.
1. applicationContext.xml의 역할
applicationContext.xml은 스프링의 루트 애플리케이션 컨텍스트를 정의합니다. 이 컨텍스트는 웹 애플리케이션 전반에서 공유되는 빈(Bean)들을 관리하며, 주로 데이터 소스, 서비스, 리포지토리 등과 같은 전역적인 빈을 선언합니다. 이러한 빈들은 모든 서블릿에서 접근 가능하며, 애플리케이션의 공통 기능을 제공합니다.
applicationContext.xml은 일반적으로 ContextLoaderListener에 의해 로드되며, web.xml에 다음과 같이 설정됩니다:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
이 설정을 통해 스프링은 애플리케이션 시작 시 applicationContext.xml을 로드하여 루트 컨텍스트를 초기화합니다.
2. spring-servlet.xml의 역할
spring-servlet.xml은 특정 서블릿, 주로 DispatcherServlet과 관련된 서블릿 전용 애플리케이션 컨텍스트를 정의합니다. 이 컨텍스트는 해당 서블릿에만 적용되는 빈들을 관리하며, 주로 컨트롤러, 뷰 리졸버 등 웹 요청 처리와 직접적으로 연관된 빈들을 선언합니다.
spring-servlet.xml은 DispatcherServlet에 의해 로드되며, web.xml에 다음과 같이 설정됩니다:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
이 설정을 통해 DispatcherServlet은 초기화 시 spring-servlet.xml을 로드하여 서블릿 전용 컨텍스트를 구성합니다.
3. 두 설정 파일의 차이점
- 범위(Scope):
- applicationContext.xml은 애플리케이션 전역에서 공유되는 빈들을 정의합니다.
- spring-servlet.xml은 특정 서블릿에만 적용되는 빈들을 정의합니다.
- 접근성(Accessibility):
- spring-servlet.xml의 빈들은 applicationContext.xml의 빈들을 참조할 수 있지만, 그 반대는 불가능합니다.
- Daplus
- 용도(Purpose):
- applicationContext.xml은 데이터 소스, 서비스, 리포지토리 등과 같은 전역적인 빈들을 선언합니다.
- spring-servlet.xml은 컨트롤러, 뷰 리졸버 등 웹 요청 처리와 직접적으로 연관된 빈들을 선언합니다.
4. 공식 문서 참고
더 자세한 내용은 스프링 공식 문서를 참고하시기 바랍니다:
이 문서에서는 스프링의 웹 애플리케이션 컨텍스트와 관련된 자세한 내용을 확인할 수 있습니다.
'웹 개발 > 백엔드' 카테고리의 다른 글
Spring과 EJB3: 언제 사용하고, 함께 쓰면 더 좋은 경우는? (2) | 2024.11.25 |
---|---|
Docker Compose로 Spring Boot 애플리케이션과 PostgreSQL 연결하기 (0) | 2024.11.25 |
Spring 정적 필드에 값 주입하기: 가능할까? 해결 방법 총정리 (0) | 2024.11.24 |
Spring 생성자 주입 vs 필드 주입: 무엇이 더 좋을까? 상세 비교 및 예시 (1) | 2024.11.20 |
Spring 의존성 주입 문제 해결: @Autowired null 원인 분석 (0) | 2024.11.20 |