*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 패턴 아키텍처
- 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행
- 적절한 세부 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 수정
'스프링(Spring)' 카테고리의 다른 글
Spring-Data Access, DataSource, Servlet Context, Context 분리와 전략 (0) | 2022.10.19 |
---|---|
static file 처리와 FileUpload, JUnit & Spring-Test (0) | 2022.10.12 |
@Controller, HTTP 파라미터 처리, RESTful API (2) | 2022.10.05 |
Spring Framework 설치, 스프링과 Maven, Maven Spring Project 생성, IoC, DI (Dependency Injection) (0) | 2022.09.20 |
Spring Framework의 개념, 특징, 사용 가능 IDE (0) | 2022.09.14 |