공부, 기록

스프링 Context 본문

공부/소소한 개발

스프링 Context

무는빼주세요 2022. 4. 2. 15:12

Context : Bean을 다루기 위한 Container 내부의 공간

Context의 구조

 Application Context : 스프링 Context 기능의 중심인 최상위 인터페이스.

  • BeanFactory 로서의 기능
  • 파일 리소스를 일반적인 방식으로 로드하는 기능
  • Environment 관련 기능
  • 등록된 이벤트 리스너에게 이벤트를 발행하는 기능
  • 다국화를 지원하여 메세지를 해석하는 기능
  • 부모 Context로 부터 상속을 받음

AbstractApplicationContext : ApplicationContext을 구현한 추상 클래스로, 내부에 정의된 특수한 Bean들을 등록할 수 있다

GenericApplicationContext : Context로서의 기능을 거의 다 갖고있다. 주로 수동으로 직접 Bean을 등록할 때 사용한다.
XmlBeanDefinitionReader를 사용하여 xml 파일을 읽어와야 한다

 

Context의 종류

DispatcherServlet : Spring MVC에서 요청을 받는 부분으로 DispatcherServlet이 HandlerMapping을 통해 Controller로 매핑.

 

Root Context : 모든 서블릿이 공유할 수 있는 Bean들이 모인 공간. DB와 관련된 Repository나, Service 등이 있다.

 

Servlet Context : 서블릿 각자의 Bean들이 모인 공간. 웹 앱마다 한개씩 존재하므로, 웹 앱 그 자체를 의미하기도 한다.
이 컨텍스트 내의 Bean들은 서로 공유될 수 없다. MVC의 Controller(서블릿)이 이에 해당한다.

 

WebApplicationContext : 웹 애플리케이션에 특화된 Context.

 

ConfigurableWebApplicationContext : WebApplicationContext를 설정하는데 쓰이는 Context.

WebContext를 설정해야 할 때엔 Configuarble 클래스로 바꿔서 설정한다.

 

ContextLoaderListener 란?
스프링에서 사용되는 Context 간의 계층 관계를 연결해준다.
웹 어플리케이션이 시작되고 종료되는 시점에 Servlet Context가 생성하는 이벤트를 연결
Servlet WebApplicationContext 에서는 Root WebApplicationContext 를 참조 가능하지만, 그 반대로 참조 불가

 

 

 

 

 

 

 

 

 

 

 

참조 : 

https://linked2ev.github.io/spring/2019/09/15/Spring-5-%EC%84%9C%EB%B8%94%EB%A6%BF%EA%B3%BC-%EC%8A%A4%ED%94%84%EB%A7%81%EC%97%90%EC%84%9C-Context(%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8)%EB%9E%80/
https://velog.io/@seculoper235/Spring-Core-Context-1%ED%8E%B8

'공부 > 소소한 개발' 카테고리의 다른 글

Kafka Streams  (0) 2022.04.10
카프카 커넥트  (0) 2022.04.10
CQRS  (0) 2022.03.12
EDA  (0) 2022.03.05
JAVA의 GC  (0) 2022.02.27