반응형
자바(JAVA) 웹 애플리케이션 아키텍처에 대해서 알아보자.
- 아래와 같이 아키텍처는 수십년간에 걸쳐서 진화해옴.
- 모델 1 아키텍처
- 모델 2 or MVC 아키텍처
- 프론트(front) 컨트롤러가 있는 모델 2
우선, 모델1 아키텍처에 대해서 알아보자
- 모델1 아키텍처
-
- 설명
- 자바기반 웹플리케이션을 개발하는데 사용되었던 초기 아키텍처.
- 그림과 같이 JSP 페이지는 웹 브라우저 요청을 직접 처리했음.
- JSP 페이지는 자바 빈(JAVA Bean)을 포함하는 모델을 사용함.
- 일부 애플리케이션에서는 JSP 가 DB에 대한 쿼리를 수행하기도 함.
- 위의 아키텍처는 많은 단점이 존재했음.
- 첫째, 어려운 관점 분리
- 데이터 검색, 데이터 표시, 다음에 표시할 페이지, 비즈니스 로직등등을 JSP 에서 담당함.
- 다시말해서, 관점이 분리가 되지 못한 상태였음.
- 데이터 검색, 데이터 표시, 다음에 표시할 페이지, 비즈니스 로직등등을 JSP 에서 담당함.
- 둘째, 복잡한 JSP
- 위 처럼 많은 로직을 JSP 에서 처리 함으로써, 본의아니게 JSP 가 거대해지고, 거대해지면 거대해질 수 록 유지 관리 하기가 힘들어짐.
- 첫째, 어려운 관점 분리
- 위의 단점을 극복하고자 모델2 아키텍처가 출연하게 됨.
- 설명
그럼, 모델 2 아키텍처에 대해서 알아보자
- 모델2 아키텍처
-
- 설명
- 모델 2 아키텍처가 출연하게된 이유는?
- 위에서 설명한 것과 같이,
- 관점이 분리가 되지 않았고, 여러 책임이 있는 복잡한 JSP에 대해서 어떻게 하면 복잡성을 해결할 수 있을까? 라는 고민에서 그리고 그것을 해결하기 위해서 도입됨.
- 위에서 설명한 것과 같이,
- 모델 2는 MVC 아키텍처 스타일의 기반을 형성하게됨.
- 모델 2에서는 아래와 같이 명확한 역할 분리를 제공함.
- M(Model)
- 뷰를 생성하는데 사용할 데이터
- V(View)
- 모델을 사용해 화면을 랜더링함.
- C(Controller)
- 호름을 제어.
- 즉, 웹브라우저에서 요청을 수신받으면, 모델을 채우고 뷰로 리다이렉션 하는 역할.
- 서블릿 #1 / 서블릿 #2 ...
- 호름을 제어.
- M(Model)
- 모델 2에서는 아래와 같이 명확한 역할 분리를 제공함.
- 모델 2에서 더욱 진화한 모델이 모델2 프론트 컨트롤러 아키텍처이다.
- 모델 2 아키텍처가 출연하게된 이유는?
- 설명
728x90
그럼, 모델2 프론트 컨트롤러 아키텍처에 대해서 알아보자.
- 모델2 프론트 컨트롤러 아키텍처
-
- 설명
- 모델 2 아키텍처의 기본 버전에서 웹 브라우저의 요청은 다른 서블릿 or 컨트롤러에 의해 직접 처리됨.
- 모델 2 프론트 컨트롤러 아키텍처에서 모든 요청은 프론트 컨트롤러라는 단일 컨트롤러로 전달되어지는 구조임.
- 그럼, 프론트 컨트롤러의 역할 및 책임에 대해서 알아보자.
- 첫째, 요청에 대한 처리할 컨트롤러를 결정함.
- 둘째, 요청에 대한 랜더링할 뷰를 결정함.
- 스프링 MVC 는 모델 2 프론트 컨트롤러 아키텍처의 수정된 버전을 사용함.
- 설명
그럼, 스프링 MVC 에 대해서 간단히 알아보자.
- 스프링 MVC는 프론트 컨트롤러에서 MVC 패턴을 사용함.
- 즉, 프론트 컨트롤러는 DispatcherServlet 을 말함.
- The request processing workflow in Spring Web MVC
-
- 설명
- the DispatcherServlet is an expression of the “Front Controller” design pattern (this is a pattern that Spring Web MVC shares with many other leading web frameworks).
- 즉, 다시말해서, DispatcherServlet 은 “Front Controller” 을 말함.
- 아래는 DispatcherServlet 의 선언과 맵핑에 대한 예시를 보여준다.
- the DispatcherServlet is an expression of the “Front Controller” design pattern (this is a pattern that Spring Web MVC shares with many other leading web frameworks).
- 설명
-
- 아래는 위의 xml 과 동등한 코드 베이스의 예시임.
- 출처
- docs.spring.io 페이지
- 스프링 MVC 의 중요 기능 및 특징을 알아보자
- 첫째, 각 객체에 대해 잘 정의된 독립적인 역할을 가진 느슨하게 결합된 아키텍처임.
- 둘째, 컨트롤러 메소드 정의를 유연하게 할 수 있다.
- 즉, 컨트롤러 메소드는 다양한 범위의 파라미터및 반환값을 가질 수 있음.
- 셋째, 도메인 객체를 폼 백엔드 객체로 재사용할 수 있음.
- 다시말해서 별도의 서식 객체를 가져야할 필요성이 줄어듬.
- 넷째, 모델은 key-value 쌍과 함께 해시맵을 사용함.
- 즉, 여러 뷰 기술과의 통합을 허용한다고 함.
- 다섯째, 바인딩하는 동안 불일치되는 타입은 런타임 에러 대신 벨리데이션 에러로 해결할 수 있다고 함.
- 즉, 유연한 바인딩을 지원함.
- 여섯째, 단위테스트 컨트롤러에 Mock MVC 프레임워크가 포함되어 있다고 함.
- 여기까지 스프링 MVC 의 중요 기능 및 특징을 간단하게 알아보았네요. ^^;
- 다음 블로깅에서는 스프링 MVC 가 어떻게 동작하는 지와 스프링 MVC 를 다루는 프로그래머로써 알아두어야할 핵심 개념에 대해서 알아보도록 할께요..
결론
- 자바(JAVA) 웹 애플리케이션 아키텍처는 수십년간 아래와 같이 진화해옴.
- 모델 1 아키텍처
- 모델 2 or MVC 아키텍처
- 프론트(front) 컨트롤러가 있는 모델 2
- 스프링 MVC 는 모델 2 프론트 컨트롤러 아키텍처의 수정된 버전을 사용함.
- 오늘도 자바(JAVA) 웹 애플리케이션 아키텍처및 스프링MVC에 대한 지식의 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
11.Spring, 스프링MVC의 핵심개념 중 RequestMapping 에 대해서 알아볼께요. (0) | 2021.01.02 |
---|---|
10.Spring, 그럼 스프링 MVC 아키텍처가 어떻게 동작을 하는지 간단하게 알아볼까요? (0) | 2021.01.02 |
8.Spring, 스프링 빈(Bean) 스코프와 중요한 어노테이션에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |
7.Spring, 의존성 주입(dependency injection) 타입에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |
6.Spring, 스프링 IoC 컨테이너에 대해서 이해한번 해봅시다. ^^ (0) | 2021.01.02 |