[Spring] 관심사 분리, MVC pattern, 컴포넌트 아키텍처, 프론트 컨트롤러


각 컴포넌트의 역할

 

1. 관심사의 분리 (Separation of Concerns)와 계층화(Layering)

 

1) 관심이 같은 것은 한 곳으로 모으고, 다른 것은 따로 떨어뜨려 서로 영향을 주지 않도록 분리하는 것이다.

2) 복잡한 소프트웨어를 계층으로 나눔으로써 관심사를 분리한다.

    

– 프레젠테이션(Presentation) : 사용자와 소프트웨어간 상호작용을 처리한다.

– 도메인 (Domain) : 핵심 업무 논리 처리하는 객체들로 구성되어있다. 엔터프라이즈 애플리케이션에서 가장 중요한 자산이다.

– 데이터 원본 (DataSource) : 파일 또는 데이터베이스 시스템 등과 데이터 송수신 처리한다.

2. 소프트웨어 개발 시 지켜야 할 두가지 요건

 

1) 오늘 완성해야 하는 기능을 구현하는 코드를 짜야 하는 동시에 다음 날 쉽게 변경할 수 있는 코드를 작성해야한다.

3. SOLID 원칙

 

1) 다섯 가지 소프트웨어 설계 원칙

Single responsibility
Open/closed
Liskov responsibility
Interface separation
Dependency inversion principle

 

2) 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법으로 구성되어 있다.

3) 모듈과 컴포넌트 내부의 구조를 이해하기 쉽고, 변경에 유연하게 만드는데 목적을 두고 있다.




4. 관심사의 분리 (Separation of Concerns)와 높은 응집도, 낮은 결합도

 

1) 관심이 같은 것끼리는 한 곳으로 모으고, 다른 것은 따로 떨어뜨려 서로 영향을 주지 않도록 분리하는 것이다.

2) 응집도가 높다는 것은 하나의 모듈, 클래스가 하나의 책임 또는 관심사에만 집중되어 있다는 뜻이다.

3) 결합도가 낮다는 것은 하나의 오브젝트가 변경될 때, 관계를 맺고 있는 다른 오브젝트에 영향을 안 준다는 뜻이다.

5. MVC (Model-View-Controller) 패턴

 

1) MVC는 소프트웨어 공학에서 사용되는 아키텍처 패턴이다.

2) 주 목적은 Business Logic과 Presentation Logic을 분리하기 위함이다.

3) 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

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

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

– Controller : Model과 View 사이의 상호 작용을 관리한다.




6. 각각의 MVC 컴포넌트 역할

 

1) 모델 컴포넌트

– 데이터 저장소(DB)와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 한다.

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

– DAO 클래스, Service 클래스에 해당한다.

 

2) 뷰 컴포넌트

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

– 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML이나 CSS, JavaScript(jQuery)를 사용하여 웹 브라우저가 출력할 UI를 만든다.

– HTML과 JSP를 사용하여 작성 할 수 있다.

 

3) 컨트롤러 컴포넌트

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

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

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


7. 스프링 MVC의 요청/응답 처리 흐름

 

1) 프런트 컨트롤러인 DispatcherServlet을 중심으로 동작한다.

2) MVC(Model-View-Controller)가 협력해서 웹 요청과 응답을 처리한다.

8. MVC 아키텍처 패턴

 

1) 로직과 프리젠테이션 분리

2) 화면의 구성 요소와 데이터를 담은 모델(Model)

3) 화면 출력 로직을 담은 뷰(View)

4) 애플리케이션 제어 로직을 담은 컨트롤러(Controller)




9. 프론트 컨트롤러(Front Controller) 패턴

 

1) 컨트롤러를 대표해서 모든 요청과 응답을 대응한다.

2) 요청 및 응답에 대한 횡단 관심사(보안, 예외 처리)를 적용한다.

3) 적절한 하위 컨트롤러에게 작업 위임, 뷰 선택 및 결과를 출력한다.

 

[Spring] 표현식, 표현언어, 영역, Scope, 내장객체

 

[Spring] 표현식, 표현언어, 영역, Scope, 내장객체

1. 소개 1) 표현 언어 (Expression Language) – 변수의 값을 표현식보다 편하게 출력할 수 있게 해 준다. – 표현식 – 스크립트 언어 – JSP의 기본 문법 보완하는 역할을 한다. – 4가지 영역(Scope) 2) EL 기본 사

ozizo.tistory.com

[Spring] 스크립트 요소 (스크립틀릿, 표현식, 선언부) 지시어 등

 

[Spring] 스크립트 요소 (스크립틀릿, 표현식, 선언부) 지시어 등

1. 소개 1) 동적인 웹 페이지를 개발하기 위한 웹 프로그래밍 기술이다. 2) 자바 언어를 사용하여 서버 측에서 웹 페이지들을 생성해 웹 브라우저로 전송해준다. 3) 장점 – 짧은 코드로 동적인 웹

ozizo.tistory.com

[Spring] JSP 서블릿 Request Response 객체

 

[Spring] JSP 서블릿 Request Response 객체

1. 자바 서블릿(Java Servlet) & JSP (JavaServer Page) 1) Java EE (Jakarta EE)에 속한 기술 2) 자바 웹 애플리케이션의 기반 기술 3) 웹 콘텐츠를 동적으로 생성하는 서버 측 자바 프로그램이다. 4) Jakarta EE 컨테이

ozizo.tistory.com