스프링(Spring)

Layered Architecture & @Component, Spring MVC 소개

개발학생 2022. 9. 27. 22:16
반응형

*22년 4월 한 달간 한국이러닝협회의 '실전 개발자를 위한 Spring Framework'를 수강하고 정리한 내용입니다

 

 

 

1. Layered Architecture & @Component

1) Layered Architecture

(1) 특징: 계층화 아키텍처- 효율적인 개발과 유지보수를 위해 계층화하여 개발- 대부분의 중/대규모 어플리케이션에서 적용- 각 레이어는 독립된 R&R을 가짐  

(2) Layered Architecture의 영역은 3가지로 구분됨 - 프레젠테이션 영역, 비즈니스 영역, 데이터 영역

- 프레젠테이션 영역: 사용자와 상호작용을 담당, 사용자의 요청을 분석/응답

- 비즈니스 영역: 기능을 수행, 트랜잭션 수행

- 데이터 영역: 데이터의 저장과 조회를 담당, 주로 데이터베이스와 연동하여 작업

 

(3) 사례: 전자정부 프레임워크

 

2) MVC 패턴

- 프레젠테이션 레이어 세분화 - model, controller, view

 

3) @Component

- 아래 어노테이션들이 layered architecture를 지원해줌 (각각 프레젠테이션, 비즈니스, 데이터 영역을 지원)

- @Autowired를 통해 depend injection이 자동으로 이루어짐

 

2. Spring MVC 소개

1) MVC (Model-View-Controller) 패턴의 개념

- 소프트웨어 공학에서 사용되는 아키텍처 패턴

- Business logic과 Presentation logic을 분리하기 위함

- 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나, 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음

   -> Model: 애플리케이션의 정보(데이터, Business Logic 포함)

   -> View: 사용자에게 제공할 화면(Presentation Logic)

   -> Controller: Model과 View 사이의 상호 작용을 관리

 

2) 각 MVC 컴포넌트의 역할

(1) 모델(Model) 컴포넌트

- 데이터 저장소(ex: 데이터베이스 등)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함

- 여러 개의 데이터 변경 작업(추가, 변경, 삭제)을 하나의 작업으로 묶는 트랜잭션을 다루는 일도 함

- DAO 클래스, Service 클래스에 해당

 

(2) 뷰(View) 컴포넌트

- 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함

- 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML과 CSS, Java Script를 사용하여 웹 브라우저가 출력할 UI를 만듬

- Html과 JSP를 사용하여 작성할 수 있음

 

(3) 컨트롤러(Controller) 컴포넌트

- 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출하는 일을 함

- 클라이언트가 보낼 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하는 일을 함

- 모델이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록 뷰에게 전달

- Servlet과 JSP를 사용하여 작성할 수 있음

 

3) Front Controller 패턴 아키텍처

모델2 아키텍처

- 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행

- 적절한 세부 Controller에게 작업을 위임

- 각각의 애플리케이션 Controller는 클라이언트에게 보낼 뷰를 선택해서 최종 결과를 생성하는 작업

- 인증이나 권한 체크처럼 모든 요청에 대하여 공통적으로 처리해야 하는 로직이 있을 경우, 전체적으로 클라이언트의 요청을 중앙 집중적으로 관리하고자 할 경우에 사용

 

- MVC패턴 도입 이전: 모델 1 아키텍처, MVC패턴 도입 이후: 모델 2 아키텍처

- Front Controller(=DispatcherServlet)가 내장되어 있으면 조금 더 쉽게 코딩 가능

- 서버로 들어오는 모든 요청을 Front Controller가 선처리함

 

4) Spring MVC의 특징

- DL과 AOP같은 기능뿐만 아니라 서블릿 기반의 웹 개발을 위한 MVC 프레임워크 제공

- 모델2 아키텍처와 Front Controller 패턴을 프레임워크 차원에서 제공

- Spring을 기반으로 하고 있으므로 Spring이 제공하는 트랜잭션 처리나 DI 및 AOP 등을 손쉽게 사용

- 대부분의 MVC 프레임워크들은 Front Controller 패턴을 적용해서 구현

- Spring MVC도 Front Controller 역할을 하는 DispatcherServlet 이라는 클래스를 계층의 맨 앞단에 놓고, 서버로 들어오는 모든 요청을 받아서 처리하도록 구성

- 예회가 발생했을 때 일관된 방식으로 처리하는 것도 Front Controller의 역할

 

- 주요 구성 요소: 개발자가 실제로 개발해야 하는 부분이 Controller 부분

 

- 핵심 설정 내용: Web.xml 수정

 

 

 

 

 

 

 

반응형