★★★★★DAY4-Class03.프레젠테이션 레이어와 비즈니스 레이어 통합
"이 책을 2회독 한 이유가 바로 여기에 있다. 구체적인 개발 Skill을 익히는 것도 중요하지만, Spring-Framework의 구조와 틀을 정확히 익히도록 한다."
3.2 비지니스 컴포넌트 로딩
3.2.1 2-Layered 아키텍처
1. 설명
: Spring-Framework는 일반적으로 '2-Layered'(* Presentation Layer + Business Layer ) 형식으로 구성 되어 있다.
2. 개괄도
2-1) Presentation Layer - Business Layer
#1. 첨부자료 : 2-Layered 아키텍처 = 프리젠테이션 레이어 + 비즈니스 레이어
2-2) ~ P394 프로젝트 구조
: 비즈니스레이어 설정파일(* applicationContext.xml)과 프리젠테이션레이어 설정파일(* presentation-layer.xml)이 각각 따로 존재한다.
#2. 첨부자료 : 2-Layered 아키텍처
3.2.2 ContextLoaderListener 등록 (P.404~)
1. 목적
: DispatcherServlet이 Client측의 *.do 요청을 받게 되면, init() 메소드를 통해서, presentation-layer.xml 설정 파일을 로딩하게 된다. (* @Controller 객체 메모리 생성)
이때, 가장 큰 문제점은 application-layer.xml 설정 파일이 로딩되지 않기 때문에 비즈니스 컴포넌트들이 생성 되지 않는다.
2. 방법
: web.xml(*서블릿 설정파일)에 ContextLoaderListener 클래스를 설정하여, application-layer.xml 파일을 pre-loading 시킨다.
# 첨부자료 3. : web.xml 에 추가되는 ContextLoaderListener 클래스 설정 파일
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3. 결과
: 위와 같이 contextConfigLoaction 클래스 설정을 통해서, applicationContext.xml 설정 파일을 pre-Loading 할 수 있는 것이다.
3.2.3 스프링 컨테이너의 관계 : Spring Framework가 작동하는 원리! (P.407~)
#첨부자료3. Spring Framework 작동 개괄도
1. 구동 순서
순서1) : Tomcat 서버를 가동하면, web.xml 파일을 로딩하여 '서블릿 컨테이너'를 구동한다. → '서블릿 컨테이너'는 application-layer.xml 설정파일을 pre-loading 하여, 스프링 컨테이너(* Root 컨테이너 - 비즈니스 레이어 설정)를 구동한다. → Root 컨테이너를 통해 DAO, SERVICE 등의 객체들이 메모리에 생성 된다.
순서2)-[순서1 동작 후] : Client 가 *.do 의 요청을 서버에 전달한다. → '서블릿 컨테이너'는 DispatcherServlet을 구동하며, init( )메소드를 통해 presentation-layer.xml 설정파일을 loading 하여 스프링 컨테이너(* 자식 컨테이너)를 구동한다. → 자식 컨테이너를 통해서, @Controller, @RequestMapping 등이 처리 된다.
2. 부모(ROOT) 컨테이너와 자식 컨테이너의 관계
#첨부자료4. 부모(ROOT) 컨테이너와 자식 컨테이너의 관계
※ P408 프로젝트 및 설정 파일
1. 설정 파일
구분 | 설정 파일 | 프로젝트內 경로 |
서블릿 설정파일 | web.xml
0.00MB
|
|
부모 컨테이너 | applicationContext.xml
0.00MB
|
|
자식 컨테이너 | presentation-layer.xml
0.00MB
|
|
POM.xml(빌드업) | pom.xml
0.01MB
|
2. 프로젝트(P408)