자바/SpringFrameWork

★★★★★DAY4-Class03.프레젠테이션 레이어와 비즈니스 레이어 통합

itboxer91 2020. 7. 25. 21:33

"이 책을 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)

BoardWeb2006.zip
0.05MB