본문 바로가기
Spring

(스프링 관련 정보) web.xml / servlet-context.xml / root-context.xml 에 대하여

by SuldenLion 2023. 7. 16.
반응형

web.xml / servlet-context.xml / root-context.xml의 역할과 차이

1) web.xml

- Java 애플리케이션에서 서블릿 컨테이너에 대한 설정 정보를 포함하는 배치 서술자(Deployment descriptor) 파일.

- 웹 애플리케이션의 배치, 구성, 초기화, 보안 설정 등을 정의하는 XML 파일

- 웹 애플리케이션 아카이브(war 파일)의 'WEB-INF' 디렉토리에 위치하며, 서블릿 컨테이너의 의해 읽혀지고 해석됨.

- XML 구문을 따름

- 최신 버전의 Java EE에서는 'web.xml' 대신에 자바 기반의 어노테이션 설정과 'web-fragment.xml'등의 설정 방식 사용

- 웹 애플리케이션 서버(WAS)가 최초로 구동될 때(톰캣 최초 구동시) 각종 설정을 정의함.

 

ex)

- 서블릿 매핑 (Servlet Mapping) : 서블릿 클래스와 URL 패턴간의 매핑을 설정함. 서블릿 클래스의 인스턴스가 특정 URL 패턴으로 요청을 처리하도록 지정함

위의 예시는 appServlet이라는 서블릿 클래스를 "/" 라는 URL 패턴에 매핑함.

 

- 리스너 설정 (Listener Configuration) : 웹 애플리케이션의 이벤트 리스너를 설정함. 웹 애플리케이션의 생명주기 이벤트에 대한 이벤트 핸들러를 등록할 수 있음.

↳ 스프링에서 제공하는 ContextLoaderListener 

 

- 오류 페이지 설정 (Error Page Configuration) : 특정 HTTP 오류 코드에 대한 오류 페이지를 설정함. 오류가 발생했을때 사용자에게 보여질 오류 페이지를 지정할 수 있음.

 

- 필터 설정 (Filter Configuration) : 요청을 가로채고, 수정하거나 처리하는 필터를 설정함. 필터는 요청 전후에 특정 작업을 수행하거나 요청을 변경할 수 있음.

인코딩 관련 필터

 

 

context-param 태그 내에 root-context로 모든 서블릿과 필터들이 공유함으로 root-context.xml을 정의함.

 

 

 

2) servlet-context.xml

- Spring MVC 프로젝트에서 사용되는 Spring Web MVC 설정 파일.

- 서블릿 컨텍스트에 대한 구성을 정의하고, Spring MVC 프레임워크가 동작하는데 필요한 빈(Bean) 및 설정을 포함

- 웹 애플리케이션에서 클라이언트 요청을 받기 위한 컨텍스트 설정이며, 요청과 관련된 객체를 정의함. url과 관련된 Controller나 Annotation, ViewResolver(= Controller에서 view 정보에 대해 설정), Interceptor, MultipartResolver 등의 설정을 해줌

- servlet-context.xml 파일은 주로 "WEB-INF" 디렉토리에 위치하며, Spring MVC 프레임워크에 의해 읽혀지고 해석됨.

- XML 구문을 따르고, Spring MVC 동작을 제어하고 설정하는데 사용됨

- web.xml 파일과 마찬가지로 최신 버전의 Spring에서는 "servlet-context.xml" 대신 Java 기반의 설정 방식과 함께 "@Configuration" 어노테이션 및 "WebMvcConfigurer" 인터페이스 등이 사용되기도 함.

 

 

ex)

- 컴포넌트 스캔 (Component Scan) : "context:component-scan" 요소를 사용하여 컴포넌트 스캔을 설정함. 이를 통해 자동으로 컨트롤러, 서비스, 레포지토리 등의 빈을 검색하고 등록할 수 있음

 

↳ "bitedu.bipa.book" 패키지에 있는 클래스들을 컴포넌트 스캔하여 해당 패키지 내의 빈을 자동으로 등록함

 

 

- 뷰 리졸버 (View Resolver) : "bean" 요소를 사용하여 뷰 리졸버를 설정함. View resolver는 논리적인 뷰 이름을 실제 뷰로 변환하는 역할을 함. 

↳ "InternalResourceViewResolver"를 사용하여 JSP 뷰 리소스를 설정. JSP 뷰의 접두사를 "/WEB-INF/views/"로, 접미사를 ".jsp"로 설정함.

 

 

- 핸들러 매핑 (Handler Mapping) : "bean" 요소를 사용하여 핸들러 매핑을 설정. Handler Mapping은 요청을 처리할 컨트롤러를 매핑하는 역할을 함.

↳ "BeanNameUrlHandlerMapping"을 사용하여 빈의 이름과 URL 패턴을 매핑

 

 

- 인터셉터 (Interceptor) : "mvc:interceptors" 요소를 사용하여 인터셉터를 설정. Interceptor는 요청 전후에 특정 작업을 수행하거나 요청을 가로챌 수 있음.

↳ "LoggingInterceptor"를 사용하여 로깅 작업을 수행하는 인터셉터를 설정.

 

 

3) root-context.xml

- Spring 웹 애플리케이션에서 사용되는 Spring 프레임워크의 루트 컨텍스트 설정 파일.

- servlet-context.xml 과는 반대로 view와 관련되지 않은 객체를 정의함. Service, Repository(DAO), DB 등의 비즈니스 로직과 관련된 설정을 해줌.

- 애플리케이션의 전반적인 구성을 정의하고, 공통적으로 사용되는 빈(Bean) 및 설정을 포함함

- 주로 "WEB-INF" 디렉토리에 위치하며, Spring 컨테이너에 의해 읽혀지고 해석됨.

- XML 구문을 따르고, 애플리케이션 전반적인 설정과 공통적으로 사용되는 빈을 정의하는데 사용됨.

 

 

ex) 

- 데이터베이스 연결 설정 (Database Connection Configuration) : "DataSource", "JdbcTemplate", "TransactionManager" 등과 같은 DB관련 Bean을 설정하여 데이터베이스 연결과 트랜잭션 관리를 수행할 수 있음.

MySQL DB 연결을 위한 "DataSource"를 설정함.

↳ JdbcTemplate을 사용하여 DB에 대한 쿼리 수행을 간편하게 처리하고, DataSourceTransactionManager를 사용하여 DB 트랜잭션을 관리함.

 

 

- Service와 DAO 설정 : 서비스 계층과 데이터 액세스 계층을 위한 Bean을 설정함. 서비스 인터페이스와 그 구현체, 그리고 DAO 클래스와 그 구현체를 등록할 수 있음.

↳ userService와 userDao라는 빈을 설정하고, 서비스 구현체에서 DAO 인스턴스를 주입받도록 설정함.

 

 

- 캐시 설정 (Caching Configuration) : Spring의 캐시 추상화를 사용하여 메서드 결과를 캐시에 저장하고 성능을 향상시킬 수 있음.

"cache:annotation-driven" 요소를 사용하여 캐싱을 활성화하고, Encache를 사용하는 "cacheManager"와 "encache" 빈을 설정하고 있음

 

반응형

댓글