보통 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' 카테고리의 다른 글
MVC 패턴 구현 순서 (1) | 2023.11.24 |
---|---|
스프링 설정에 관하여(web.xml,servlet-context.xml,root-context.xml) (1) | 2023.11.24 |
로그인시 사용하는 HttpServletRequest와 HttpSession (0) | 2023.11.13 |
ModelAttribute,RedirectAttributes (0) | 2023.11.13 |
HttpServletRequest,RequestParam,ModelAttribute (0) | 2023.11.13 |