반응형
web.xml은 웹 애플리케이션의 배포 설명자 파일로, 웹 어플리케이션의 구성과 설정을 정의하는 XML 파일입니다.
root-context.xml과 servlet-context.xml은 web.xml에서 로드되는 Spring 구성 파일입니다.
root-context.xml은 전역적인 빈을 servlet-context.xml은 웹 계층과 관련된 빈을 설정합니다.
이를 통해 Spring 웹 애플리케이션의 구성과 설정을 모듈화하고 관리할 수 있습니다.
web.xml
- Java 웹 애플리케이션의 배포 설명자 파일(Deployment Descriptor)로, 웹 애플리케이션의 구성과 설정을 정의하는 XML 파일입니다. 즉 설정을 위한 설정 파일입니다.
- 처음 WAS가 구동될 때 각종 설정을 정의해줍니다.
- root-context.xml과 servlet-context.xml 파일을 로드하기 위한 경로를 설정합니다.
주요 요소 및 기능
- 웹 어플리케이션 이름 설정
- `<display-name>` 요소를 통해 웹 어플리케이션 이름을 설정
- 컨텍스트 파라미터
- `<context-param>`요소를 통해 Spring 설정 파일의 위치를 지정할 수 있습니다.
- 리스너 설정
- `<listener>` 요소를 통해 웹 어플리케이션 이벤트를 처리하는 리스너를 등록할 수 있습니다. Spring Framework에서는 주로 `ContextLoaderListener`를 등록하여 Spring 컨텍스트를 로드하고 관리합니다.
- 필터 설정
- `<filter>`요소를 통해 인코딩 필터, 보안 필터 등을 등록하여 웹 어플리케이션의 요청을 전처리하거나 후처리할 수 있습니다.
- 서블릿 설정
- `<servlet>` 요소를 통해 서블릿을 정의하고 매핑합니다. 여기서 `DispatcherServlet`을 등록하고 매핑할 수 있습니다.
- `<servlet-class>` 요소를 통해 서블릿 클래스의 패키지 경로를 지정할 수 있습니다.
- `<init-param>` 요소를 통해 서블릿 초기화 매개변수를 설정할 수 있습니다.
- 서블릿 매핑
- `<servlet-mapping>` 요소를 통해 서블릿과 URL 패턴 간의 매핑을 정의합니다.
- 에러 페이지 설정
- `<error-page>` 요소를 통해 HTTP 오류 코드 또는 에러 페이지를 등록할 수 있습니다.
root-context.xml
- root-context.xml은 Spring 웹 애플리케이션의 루트 컨텍스트를 구성하는 데 사용되는 XML 파일입니다.
- 주로 애플리케이션 전반에 걸쳐 사용되는 빈(Bean)과 설정을 정의(모든 컨텍스트에서 사용 가능)합니다.
- 데이터베이스 연결, 서비스 빈, 데이터 액세스 객체(DAO) 등과 같은 공통적인 빈을 등록합니다.
- 비즈니스 로직과 서비스 계층의 빈을 정의하고 관리합니다.
- `root-context.xml`은 `web.xml`의 `ContextLoaderListener`에 의해 로드되고, 전역적으로 사용되는 빈들을 설정합니다. 이로인해 웹 어플리케이션에서 다른 구성 파일들과 공유되는 빈들을 관리할 수 있습니다.
servlet-context.xml
- servlet-context.xml은 Spring 웹 애플리케이션의 서블릿 컨텍스트를 구성하는 데 사용되는 XML 파일입니다.
- 주로 Spring Framework에서 웹 계층과 관련된 빈과 설정을 정의합니다.
- 컨트롤러, 뷰 리졸버, 핸들러 매핑, 인터셉터 등과 같은 Spring MVC의 구성 요소를 설정합니다.
- 웹 애플리케이션의 기능과 특정한 요구사항을 처리하기 위한 빈을 등록합니다.
- servlet-context.xml은 DispatcherServlet에 의해 로드되고, 해당 서블릿에 대한 설정과 관련된 빈들을 설정합니다.
주요 요소 및 기능
- 빈(Bean) 설정
- `<beans>` 요소 안에 작성함으로 모든 빈 설정을 정의합니다. `<beans>` 요소는 `xmlns`속성을 사용하여 Spring 네임스페이스를 선언합니다.
- `<bean>` 요소는 빈을 정의하는데 사용되며, 각 빈은 `id`라는 고유한 식별자를 가집니다. 이때 `class` 속성은 빈으로 사용될 클래스의 전체 이름을 지정합니다.
- `<property>` 요소는 `<bean>` 요소 내에서 속성을 사용하여 빈의 프로퍼티를 설정할 수 있습니다. 이때 `name`은 프로퍼티의 이름, `value`는 프로퍼티의 값을 지정하고, `ref`를 사용하여 다른 빈을 참조할 수 있습니다. (의존성 주입)
- `<consturctor-arg>` 요소를 사용하여 생성자 인자를 지정할 수 있습니다. `value`를 사용하여 인자의 값을 지정하거나, `ref` 속성을 사용하여 다른 빈을 참조할 수 있습니다. (의존성 주입)
- 컴포넌트 스캔
- `<context:component-scan base-package="com.example" />`요소를사용하여컴포넌트스캔을설정할수있습니다.
- `<mvc:annotation-driven>`
- 어노테이션 기반의 웹 요청 처리를 활성화하는 설정 요소입니다.
- 요청 매핑과 핸들러 어댑터 설정: 알맞은 컨트롤러 메서드가 실행되도록
- 데이터 바인딩 및 검증: 요청 파라미터를 컨트롤러의 메서드 파라미터에 자동으로 바인딩, 어노테이션 기반의 검증 어노테이션인 @Valid, @NotBlank 등을 사용하여 요청 데이터의 유효성을 검증
- 포맷터와 컨버터 설정: 날짜, Enum 등과 같은 데이터 형식에 대한 포맷터와 컨버터를 자동으로 등록합니다.
- HTTP 메서드 지원, 요청 매개변수 처리, 세션 상태 저장 등을 자동으로 처리 설정
- `<mvc:resources>`
- 정적 리소스 핸들러를 설정하는데 사용합니다.
- `location` 속성을 통해 리소스의 실제 위치를 지정하고 `mapping` 속성으로 요청 경로를 지정하여 매핑합니다.
- `<mvc:interceptors>`
- 인터셉터(요청 처리 전후에 실행되어 특정 작업을 수행하거나 요청을 가로채는데 사용)를 설정하는데 사용
- `<util:properties>`
- Spring Framework에서 제공하는 설정 요소로, 속성 파일의 내용을 업로드 하여 Spring Bean으로 사용하도록 해줍니다. 구성 정보나 환경 변수등의 값을 관리하기 위해 사용됩니다.
<util:properties id="demoProperties" location="classpath:demo.properties" />
<bean ...>
...
<property name="demoPassword" value="#{demoProperties['db.password']}" />
</bean>
반응형
'Spring Framework' 카테고리의 다른 글
Spring WebClient를 활용하여 HTTP 요청 처리하기 (0) | 2023.07.27 |
---|---|
Spring @RequestParam/@PathVariable/@RequestBody/@RequestHeader/@CookieValue (0) | 2023.05.25 |
Spring @ControllAdvice와 @ExceptionHandler로 전역 예외처리 하기 (0) | 2022.10.25 |
로그인 처리를 위한 UserDetailsService (0) | 2022.10.14 |
Spring Thymeleaf 살펴보기 (0) | 2022.10.06 |