dispatchr Servlet 요청 분리(2026-15-15)
오늘 강의 내용에서는 레거시 스프링(Spring) 프로젝트의 구조와 XML 설정 파일들의 역할을 학습했다. 프로젝트 내에 applicationContext.xml, dispatcher-servlet.xml 등
여러 설정 파일이 나뉘어 있는 이유가 궁금했는데, 그 핵심은 "요청의 성격(역할)에 따른 분리"에 있었다.
예를 들어, 스마트폰 앱에서 오는 요청(/api/*)은 주로 JSON 데이터를 반환하고, 일반 웹 브라우저에서 오는 요청(/web/*)은 HTML 화면(View)을 렌더링하여 반환해야 한다.
이처럼 성격이 다른 요청 처리를 하나의 설정 파일에 모두 작성하면 코드가 복잡해지고 유지보수가 어려워진다.
이를 해결하기 위해 web.xml (Front Controller 역할)에서 DispatcherServlet을 여러 개 등록하여 트래픽을 분산시킨다.
/api/* 요청은 api-servlet.xml 설정을 따르는 서블릿이 처리
/web/* 요청은 web-servlet.xml 설정을 따르는 서블릿이 처리
이렇게 분리함으로써 각 요청 유형에 맞는 인터셉터, 에러 처리 등의 설정을 독립적으로 관리할 수 있어 구조가 훨씬 명확해진다.
동시에, DB 연결, Service, DAO와 같이 공통으로 사용되는 비즈니스 로직은 부모 컨텍스트인 applicationContext.xml에 정의하여 자식 컨텍스트들이 공유하도록 하는 '계층 구조'를 형성한다.
스프링에서 왜 설정을 분리하고 계층 구조를 가지는지 원리를 이해하니 전체적인 흐름이 잡히는 것 같다.
오늘 학습한내용을 통해 실제 web.xml 코드를 이해하는데 도움이 되었으며 세부적인 분리도 더욱 이해가 간다.
댓글
댓글이 없습니다.
