MVC Pattern (Model View Controller)
디자인 패턴 중 하나인 MVC Pattern은 어플리케이션을 구성할 때 그 구성요소를 세가지의 역할(Model, View, Controller)로 구분한 패턴을 의미함. 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 설계가 가능함.
Model -> (updates) -> View
View -> (sends input from user) -> Controller
Controller -> (Sometimes updates directly) -> View
Controller -> (Manipulates) -> Model
▷ 컨트롤러 (Controller)
모델(Model)과 뷰(View) 사이에서 브릿지 역할을 수행. 앱의 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함. 사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함. 컨트롤러로 들어온 요청은 어떻게 처리할지 결정하여 모델로 요청을 전달함. ex) 쇼핑몰에서 상품을 검색하면 그 키워드를 컨트롤러가 받아 모델과 뷰에 적절하게 입력을 처리하여 전달함.
▷ 모델 (Model)
데이터를 처리하는 영역. 데이터베이스와 연동을 위한 DAO(Data Access Object)와 데이터의 구조를 표현하는 DO(Data Object)로 구성됨. ex) 검색을 위한 키워드가 넘어오면 데이터베이스에서 관련된 상품의 데이터를 받아 뷰에 전달.
▷ 뷰 (View)
데이터를 보여주는 화면 자체의 영역을 뜻함. 사용자 인터페이스(UI) 요소들이 여기에 포함되며, 데이터를 각 요소에 배치함. 뷰에서는 별도의 데이터를 보관하지 않음. ex) 검색 결과를 보여주기 위해 모델에서 결과 상품 리스트 데이터를 받음.
MVC 패턴의 특징
어플리케이션의 역할을 세 구간으로 나누어 설계함으로써 서로간의 의존성이 낮아짐. 각 영역이 독립적으로 구성되어 개발자 간 분업 및 협업이 원활해짐. 한 영역을 업데이트 하더라도 다른 곳에 영향을 주지 않음. / 요청사항들이 많아질수록 혹은 많은 업데이트로 기능들이 많아지면 컨트롤러의 역할이 너무 많아질 수 있음.
@RestController :
Spring Framework 4 버전부터 사용가능한 annotation. @Controller와 @ResponseBody가 결합된 어노테이션임. 컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있음. View를 거치지 않고 Http ResponseBody에 직접 Return 값을 담아 보내게 됨.
@RequestMapping
MVC의 핸들러 매핑(Handler Mapping)을 위해서 DefaultAnnotationHandlerMapping을 사용. DefaultAnnotationHandlerMapping 매핑 정보로 @RequestMapping 어노테이션을 활용. 클래스와 메소드의 RequestMapping을 통해 URL을 매핑하여 경로를 설정하여 해당 메소드에서 처리
value : url 설정
method : GET, POST, DELETE, PUT, PATCH 등
'Spring' 카테고리의 다른 글
POST, PUT, DELETE API + Swagger 라이브러리 노트 (0) | 2022.10.31 |
---|---|
Get API 만드는 방법 노트 (0) | 2022.10.30 |
Maven - pom.xml 파일 노트 (0) | 2022.10.28 |
REST API 노트 (0) | 2022.10.27 |
Maven & Gradle 노트 (0) | 2022.10.26 |
댓글