본문 바로가기
Spring/study

컨텍스트( context )

by avvin 2019. 5. 30.

컨텍스트(context)


컨텍스트라는 용어는 정말 다양한 곳에서 다양한 의미로 쓰인다. 사전적인 의미는 문맥이나 환경, 정황등의 뜻이지만 그것을 그대로 웹서비스나 기타 정보통신 용어로 사용하기에는 개념상 혼동스러울 것 같다.

대충 정보통신 용어로서의 컨텍스트는 호출, 응답 간의 환경 정보라고 정의할 수 있을 것 같다. 즉, 누가 무엇을 어떤 의도를 가지고 언제 행위를 하였는지에 대한 정보를 통칭하여 컨텍스트라고 하는 듯 하다.

이 컨텍스트 정보가 그냥 일반적인 환경설정 정보와 어떤 차이를 지니냐면 컨텍스트 정보는 일반적인 환경설정 정보와 다르게 런타임시에 생성되는 정보라고 할 수 있다.

웹서비스에서 컨텍스트 기반 관리라고 한다면 웹서비스들간의 협업시에 발생할 수 있는 여러 비즈니스적인 로직을 제어, 관리하는 기능이라 할 수 있다. 즉 BPEL이나 웹서비스 Security등의 개별 기술을 통합하여 조율하여 전체적인 Orchestration을 담당하는 것이 웹서비스 컨텍스트 기반 관리이다.

ebXML의 경우는 BSI나 CPPA등이 이러한 일을 담당한다고 할 수 있고 웹서비스의 경우는 오아시스의 WS-CAF나 MS,IBM, BEA등의 WS-Coordination과 WS-Transaction등이 담당한다고 할 수 있다. 좀 더 단순하게 이해하자면 결국 웹서비스간 협업 프로세스의 트랜잭션 정보를 컨텍스트 정보라고 보면 된다.



출처 : https://m.blog.naver.com/PostView.nhn?blogId=ljhsecret&logNo=60155604088&proxyReferer=https%3A%2F%2Fwww.google.com%2F





컨텍스트 계층 관계



출처:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web



- ContextLoaderListener에 의해서 만들어지는 Root WebApplicationContext
- DispatcherServlet에 의해서 만들어지는 WebApplicationContext

1. Root WebApplicationContext 이름 그대로 최상단에 위치한 Context 이다
1.1서비스 계층이나 DAO를 포함한, 웹 환경에 독립적인 빈들을 담아둔다.
1.2서로 다른 서블릿컨텍스트에서 공유해야 하는 빈들을 등록해놓고 사용할 수 있다.
1.3Servlet context에 등록된 빈들을 이용 불가능하고 servlet context와 공통된 빈이 있다면 servlet context 빈이 우선된다.
(부모격이기 때문)
1.4WebApplication 전체에 사용가능한 DB연결, 로깅 기능들이 이용된다.

2. WebApplicationContext 서블릿에서만 이용되는 Context이다
2.1DispatcherServlet이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록하는 데 사용한다.
2.2DispatcherServlet은 독자적인 WebApplicationContext를 가지고 있고, 모두 동일한 Root WebApplicationContext를 공유한다.



출처 : https://unordinarydays.tistory.com/131