KoreanFoodie's Study

자바 Spring FrameWork #4 : 프리젠테이션과 비즈니스레이어 통합 본문

Tutorials/Spring Framework

자바 Spring FrameWork #4 : 프리젠테이션과 비즈니스레이어 통합

GoldGiver 2021. 11. 25. 16:39

Spring Framework 명강사이신 채규태님의 강좌를 듣고 핵심 용어들을 정리한 글입니다.


비즈니스 컴포넌트 사용하기

지금까지 Spring MVC를 기반으로 개발한 게시판 프로그램의 구조와 실행 순서

 

다음 그림이 바로 핵심이자, "숲"에 해당하는 구조이다.

 

 

스프링 컨테이너의 관계

톰캣 서버를 처음 구동하면 ① web.xml 파일을 로딩하여 서블릿 컨테이너가 구동된다. 그리고 ② 서블릿 컨테이너는 web.xml 파일에 등록된 ContextLoaderListener 객체를 생성(Pre Loading)한다. 이때 ContextLoaderListener 객체는 resources 소스 폴더에 있는 business-layer.xml 파일을 로딩하여 스프링 컨테이너를 구동하는데, 이를 'Root 컨테이너'라고 한다. 
그리고 이때, Service 구현 클래스나 DAO 객체들이 메모리에 생성된다. 그리고 사용자가 로그인 버튼을 클릭하여 ‘.do’ 요청을 서버에 전달하면 서블릿 컨테이너는 DispatcherServlet 객체를 생성하고 ③ DispatcherServlet 객체는 /WEB-INF/config 폴더에 있는 presentation-layer.xml 파일을 로딩하여 두 번째 스프링 컨테이너를 구동한다. 이 두 번째 스프링 컨테이너가 Controller 객체를 메모리에 생성한다. 

 

분명히 스프링 컨테이너는 두 개가 구동된다. 즉, ContextLoaderListener와 DispatcherServlet이 각각 XmlWebApplicationContext를 생성하는데, 이때 두 스프링 컨테이너의 역할과 기능이 다르다.  우선 ContextLoaderListener가 생성하는 스프링 컨테이너를 Root 컨테이너라고 하며, 쉽게 부모 컨테이너라고 생각하면 된다. 


그리고 DispatcherServlet이 생성한 컨테이너는 Root 컨테이너가 생성한 객체를 이용하는 자식 컨테이너가 된다. 따라서 부모 컨테이너가 생성한 비즈니스 객체를 자식 컨테이너가 생성한 Controller에서 참조하여 사용할 수 있다. 

 

 

 

Comments