본문 바로가기
SPRING

Context란?

by brilliant-growth 2023. 11. 24.

보통 XxxContext라고 하는 클래스들을 보면 일단 데이터의 집합이다, 어떤 정보의 모음

일반적으로 정보의 모음이라고 하면 XxxInfo정도의 이름이 되는데 Info와 다른점이라면

Context는 항상 '경계,영역,Boundary'와 연관이 있다

즉 '어떤 영역,경계를 구분하는 데이터의 모음'이거나

'어떤 영역,경계를 넘어갈 때 전달해야 하는 데이터 모음'의 의미가 강하다

 

공통 부분(ROOT-Context)

모든 서블릿이 공유 할 수 있는 Bean들이 모인 공간을 말한다

DB와 관련된 Repository나 Service등 있다.

 

개별 부분(Servlet-Context)

서블릿 각자의 Bean들이 모인 공간이다

웹 앱 마다 한개씩 존재 하므로 웹 앱 그 자체를 의미 하기도 한다

이 컨텍스트 내의 Bean들은 서로 공유될 수 없다.

MVC의 Controoler(서블릿)이 이에 해당한다

 

Context의 구조?

일반 어플리케이션 컨텍스트

 

0.ApplicationContext

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

거의 스프링 Context는 얘를 구현하며 기능에 따라 앞에 "~~ApplicationContext"라고 붙는다

 

1.AbstractApplicationContext

0번은 기능의 중심 역할을 한다면 일은 얘가 다한다.

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

 

2.GenericApplicationContext

이름부터 제네릭이듯,Context로서의 기능을 거의 다 갖고있다

주로 수동으로 직접 Bean을 등록할 떄 사용한다.

XmlBeanDefinitionReader를 사용하여 xml 파일을 읽어와야 한다.

등록 과정이 좀 번거롭다

 

3.GenericXmlApplicationContext

Bean을 배울 때 보통 가장 먼저 사용하는 인터페이스이다

위의 1번을 확장한 인터페이스로, Context 등록 과정이 간편화 되었다.

1번과 달리 xml 파일을 읽어오는 과정이 내부에 있으며 다양한 루트로 설정 파일을 불러올수 있다.

ApplicationContext context = new GenericXmlApplicationContext("springtest/User/test.xml");
TestBean testBean = context.getBean("testBean");

 

4.ClassPathXmlApplicationContext

3번과 비슷하지만 클래스 경로로 Context를 불러오는데 특화되어 있다

// TestBean 클래스의 패키지 경로에 있는 test.xml을 불러온다는 뜻
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml", TestBean.class);

 

5.FileSystemXmlApplicationContext

말 그대로 클래스 경로가 아닌 실제 파일 경로로 불러온다.

쓸데없이 길기도 하고, 파일 경로가 그대로 드러나는것도 보기 안좋기 때문에

ClassPath를 사용하는 것을 권장한다

// TestBean 클래스의 패키지 경로에 있는 test.xml을 불러온다는 뜻
ApplicationContext context = new ClassPathXmlApplicationContext("/src/main/webapp/WEB-INF/springtest/User/test.xml");

 

Web Application용 Context에 대해

 

0.ServletContext

자바 자체의 Context를 말한다

스프링도 자바로 만들어진 것이니, 모든 스프링 Context는 ServletContext라고 할 수 있다.

 

1.WebApplicationContext

웹 어플리케이션에 특화된 Context

앞서 배운 ROOT와 Serlvet Context로 사용된다.

 

2.CofigurableWebApplicationContext

WebApplicationContext를 설정하는데 쓰이는 Context

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

 

 

 

Spring Core - Context 1편 (velog.io)

 

Spring Core - Context 1편

이 Context는 설명할 것이 매우 많고 복잡하다.3편으로 나눠서 진행하며, 이번 편에서는 Context란 무엇이고, 어떤 종류가 있는지만 알아볼 것이다.Bean의 확장 버전으로, Spring이 Bean을 좀 더 다루기

velog.io

Spring core - Context 2편 (velog.io)