본문 바로가기

BackEnd/Spring

스프링에서 context에 대한 이해

반응형

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



반응형