본문 바로가기

개인 프로젝트/스프링으로 웹 앱 만들기

모델2 패턴과 스프링 MVC

모델2 디자인 패턴

스프링으로 웹 프로젝트를 진행하게되면, 스프링 MVC를 사용하게 됩니다. 스프링 MVC는 모델2 패턴을 기반으로하기에 모델2 패턴에 대한 이해가 필요합니다. 최근의 모든 웹 개발은 거의 모델 2 패턴을 사용한다고 해도 과언이 아닐정도로 널리 쓰인다고합니다. 모델2 패턴의 핵심은 화면과 데이터 처리를 분리해서 재사용이 가능하도록하는 구조입니다. 모델2 구조에서는 다음과 같은 용어들이 사용됩니다.

 

모델(Model): 데이터 or 데이터를 처리하는 영역입니다.

뷰(View): 결과화면을 만들어내는데 사용하는 자원을 의미합니다.

컨트롤러(Controller): 사용자의 요청(request)를 처리하는 영역입니다. 뷰와 모델 사이의 중간 다리역할을 해줍니다.

 

모델2 패턴을 그림으로 표현하면 아래와 같습니다. 컨트롤러는 요청을 받아 모델 계층과 연동해서 데이터를 처리하고, 결과를 뷰로 전송합니다.

모델2 디자인 패턴

 

모델2에서 Front Controller 패턴으로

스프링 MVC는 모델2 패턴을 조금 응용한 Front Controller 디자인 패턴을 사용합니다. Front Controller 디자인 패턴로의 가장 중요한 변화는 전체 로직의 일부만을 컨트롤러가 처리한다는것입니다. 흔히 위임("Delegation")이라 표현되는데, 이는 모든 흐름제어는 Front Controller가 처리하고, 로직의 일부를 컨트롤러에게 위임하는 방식입니다. 이러한 구조를 사용하게 될경우 Front Controller는 프레임워크에서 제공하므로 개발자는 로직의 일부만을 처리하는 컨트롤러만 구현하면 됩니다. 또한 모든 컨트롤러는 Front Controller의 일부분을 구현하는 형태이므로, 코드의 규격화가 가능합니다. 아래 그림은 스프링 MVC의 Front Controller 패턴입니다.

스프링 MVC Front Controller 패턴

스프링 MVC의 컨트롤러

스프링 MVC의 컨트롤러가 무엇을 처리해주는가? 

  1. 파라미터 수집: 웹에서 가장 많이 하는 작업은 사용자의 요청(request)에 필요한 데이터를 추출하고, 이를 VO(value Object)나 DTO(Data Transfer Object)로 변환하는 작업입니다. 이러한 작업을 파라미터 수집이라고 부르는데, 이를 스프링 MVC의 컨트롤러가 자동으로 처리해주기 때문에 개발에 드는 시간과 노력을 단축할 수 있습니다.
  2. 애노테이션을 통한 간편 설정: 개발자는 클래스나 메소드의 선언부에 애노테이션을 추가함으로써, 요청에 대한 응답에 필요한 작업을 모두 처리할 수 있습니다.
  3. 로직에 집중
  4. 테스트의 간편함

어노테이션이란?


어노테이션이란 원래 주석이라는 뜻으로,인터페이스를 기반으로한 문법이다. 주석과는 그 역할이 다르지만 주석처럼 코드에 따라 특별한 의미를 부여하거나 기능을 주입할 수 있다. 크게 3가지 종류가 있습니다.

  • built-in annotation
  • meta-annotation
  • custom-annotation

스프링 MVC 에서는 컨트롤러가 상속 등의 전통적인 기법을 사용하지 않는 대신 어노테이션을 사용해서 많은 일을 처리합니다. 

servlet-context.xml 파일

servlet-context.xml은 스프링 MVC 관련 설정만을 분리하기 위해 만들어진 파일로, 스프링 MVC의 설정을 담당합니다.