1. context란?
번역하면 문맥, 맥락이지만,
직관적으로 이해하자면 메모리에 로딩된 정보 덩어리라고 볼 수 있다.
단순한 메모리정보가 아니라 서로 연관성을 갖는 정보들끼리의 묶음이라고 볼 수 있다.
2. servlet-context
하나의 서블릿이 메모리에 로딩될때 연결,포함된 각종 설정정보들, 변수들, 함수들이 서블릿 바운
더리내에서 이해할 수 있는 묶음영역으로 메모리에 올라온다고 보면 된다.
서블릿 컨테이너(Apache Tomcat)가 시작되면, 해당 서블릿 컨테이너는 모든 웹 어플리케이션들
을 배포(deploy)하고 로드(load)하면서 ServletContext를 한번 생성하여, 서버의 메모리에 올라간
다.
3. servlet-context.xml, root-context.xml, web.xml 차이점
우선, xml 파일은 모두 객체(Bean)를 정의한다.
기본적으로 Spring은 여러 Context를 이용해 환경을 구성할 수 있다.
크게 두 분류로 본다면 Root Context와 Servlet Context로 구분할 수 있다.
프로젝트가 실행되었다면 서버의 구동 시 약간의 로그가 기록되는 것을 볼 수
있다. 이 로그를 이용해서 어떤 과정을 통해서 프로젝트가 실행되는지를 엿볼 수 있
다. 프로젝트 구동 시 관여하는 XML은 web.xml, root-context.xml, servletcontext,
xml 파일이다. 이 파일들 중 web.xml은 Tomcat 구동과 관련된 설정이고,
나머지 두 파일은 스프링과 관련된 설정이다.
3-1) web.xml
설정을 위한 설정 파일이다.
즉, 최초로 WAS가 최초로 구동될 때, 각종 설정을 정의해줍니다.
여러 xml파일을 인식하도록 각 파일을 가리켜 줍니다.
3-2) Servlet Context - servlet-context.xml
간단하게 Web Application의 요청을 받기 위한 Entry Point(Servlet)의 Context 설정이다.
그렇기 때문에 Servlet Context에는 -
요청에 대한 처리를 직접적으로 해줄 Controller의 매핑설정(Handler Mapping)
View를 어떻게 처리할 것인지에 대한 설정(View Resolver)
url과 관련된 controller나, @(어노테이션), ViewResolver, Interceptor, MultipartResolver 등의 설
정을 해준다.
- 서블릿에서만 이용되는 컨텍스트
- 타 서블릿과 공유하기 위한 Bean들은 루트 웹 어플리케이션 컨텍스트에 등록해놓고 사용해야 한다
- DispatcherServlet은 자신만의 컨텍스트를 생성,초기화하고 동시에 루트 어플리케이션 컨텍스트를 찾아서 자신의 부모 컨텍스트로 사용
DispatcherServlet과 관련된 설정을 해야한다.
3-3) Root Application Context - root-context.xml
- 전체 계층구조에서 최상단에 위치한 컨텍스트
- 비즈니스 로직과 관련된 설정을 해준다.
- 서로 다른 서블릿 컨텍스트에서 공유해야하는 Bean들을 등록해놓고 사용할 수 있다.
- 웹 어플리케이션 전체에 적용가능한 DB 연결, 로깅기능등에 이용
- Servlet Context에 등록된 Bean 이용 불가능 하다
- Servlet Context와 동일한 Bean이 있을 경우 Servlet Context Bean이 우선된다.
- servlet-context.xml 과는 반대로 view와 관련되지 않은 객체를 정의한다.
따라서 Service, Repository(DAO), DB등
https://cg-developer.tistory.com/406
https://thiago6.tistory.com/70
'BackEnd > Spring' 카테고리의 다른 글
스프링 시큐리티의 내부구조 (0) | 2020.01.14 |
---|---|
스프링 시큐리티의 기본동작 방식 (0) | 2020.01.14 |
스프링 시큐리티란? (0) | 2019.12.17 |
빈 객체 범위(scope)- 싱글톤, 프로토타입 (0) | 2019.07.20 |
스프링과 DI(Dependency Injection)- 의존 주입과의 관계 (0) | 2019.07.19 |