<MVC 패턴>
MVC 패턴이란?
- 개발할 때 3가지 형태로 역할을 나누어 개발하는 방법론이다.
- MVC는 다음 세 개의 컴포넌트를 말하는데 그것은 Model, View, Controller이다.
- 스프링 프레임워크는 MVC 구조를 기본으로 갖추고 있다.
컴포넌트 소개
(1) Model
- Controller의 다음 구조로 애플리케이션의 정보, 즉 데이터 흐름을 담당하는 구조를 말한다.
- Service 파일, Impl 파일, DAO 파일이 Model에 해당한다.
(2) View
- 사용자인터페이스(UI)를 얘기하는 것이며 출력화면 자체이다.
- 화면 구성 파일인 JSP 파일이 View에 해당된다.
(3) Controller
- 흐름제어(컨트롤러) 역할을 하고 비즈니스로직과 모델의 상호동작의 조정 역할을 한다.
- 웹 주소등을 기록하는 Controller.java 파일이 Controller에 해당된다.
컴포넌트 소개
- 사용자인터페이스(UI)와 비즈니스로직(데이터 저장, 수정, 삭제)을 분리하여 웹 개발을 하는 것이 가장 큰 장점이다.
- 즉 JSP의 개발 구조처럼 JSP 파일안에 화면의 요소와 SQL을 같이 넣어 놓고 개발하는 것이 아니고
철저히 분리 시켜 개발한다는 것이다.
그림으로 보는 이해

※ 그림설명
- DTO (Data Transfer object)는 데이터 교환을 위한 객체를 말하여 VO 파일등을 말한다.
즉, 데이터는 VO와 같은 역할을 하는 컴포넌트를 말한다.
- Model Layer = 비즈니스계층 + 퍼시스턴스계층(DB와 연결하는 계층)
※ MVC에서 사용하는 주요 어노테이션은 아래와 같다.
<어노테이션> - Annotation
어노테이션이란?
- 스프링 구조에서 무언가 선언을 할때 사용된다. (즉 기능에 대한 인식용으로 사용됨)
- 주석이라는 말이지만 개발자가 사용하는 주석이 아닌 시스템에서 인식하는 주석으로 사용된다.
종류
@Controller
- 컨트롤러 선언을 담당한다.
- 스프링 구조의 클래스의 컨트롤로 선언을 할때 윗쪽에 배치 시킨다.
@RequestMapping
- 웹 주소의 선언을 담당한다.
- 웹에서 요청한 주소를 인식하고 실행관련 메소드를 연결한다.
@Resoucce
- 의존관계를 자동설정할 때 사용하며 이름을 이용하여 의존하는 객체를 선언한다.
@Service
- 스프링 구조의 Impl 클래스에 선언한다.
- 비즈니스로직(저장/수정/삭제/출력)이 들어가는 곳에 작성한다.
- 컨트롤에서 Resource 지정된 이름을 사용한다.
@Repository
- 스프링 구조의 Impl 클래스에 선언한다.
- 비즈니스로직(저장/수정/삭제/출력)이 들어가는 곳에 작성한다.
- 컨트롤에서 Resource 지정된 이름을 사용한다.
@ModelAttribute
- Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션
@SessionAttribute
- Model 객체를 세션에 저장하고 사용하기 위한 어노테이션