스프링부트의 기본, MVC구조
오랜만에 스프링부트에 관해 포스팅한다. 최근 미국 한달살기도 다녀왔고,
부트캠프를 하나 더 진행을 하여서 스프링부트에 관심을 가질 시간이 없었다.
앞으로 스프링부트 관련 프로젝트를 계속 진행하면서 내가 알게된 것을 다시 적어보려고 한다.
MVC 구조Permalink
MVC구조는 스프링을 공부할때 제일 기초로, 구성 요소를 Model, View, Controller로 구분하는 패턴이다.
이때, 각각의 구성 요소가 다른 요소들에게 영향을 미치지 않아야 한다.
(구성 요소간의 간섭 없이 각자의 역할에만 충실해야 한다는 패턴)
각 구성요소가 하는 역할은 다음과 같다.
ModelPermalink
데이터를 가지고 있으며, 데이터를 처리하는 로직 또한 가지고 있음.
(데이터베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 의미)
- 모델의 규칙
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다. (뷰와 컨트롤러와 독립적)
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
ViewPermalink
화면에 요청에 대한 결과물을 보여주는 역할. (사용자가 보는 화면)
유저와 어플리케이션 간의 인터페이스이라고도 할 수 있다.
- 뷰의 규칙
- 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 모델이나 컨트롤러와 같이 다른 구성요소를 몰라야 한다.
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다.
ControllerPermalink
Model과 View의 중간다리 역할을 한다.
즉, 사용자가 데이터를 클릭하고, 수정하는 것에 대한 “이벤트”들을 처리하는 부분을 의미한다. (모든 이벤트 담당)
요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달하는 역할
- 컨트롤러의 규칙
- 모델이나 뷰에 대해서 알고 있어야한다.
- 모델이나 뷰의 변경을 모니터링 해야 한다.
MVC을 활용한 예시Permalink
-
유저가 컨트롤러에 요청을 보낸다. (예시 : 뷰에 있는 Submit 버튼을 누른다)
-
컨트롤러가 모델에 요청사항대로 데이터를 수정할 것을 지시한다.
-
모델은 지시받은대로 데이터를 수정하고 컨트롤러에게 완료되었음을 알려준다,
-
컨트롤러는 수정된 데이터를 토대로 표시할 뷰를 결정하고 화면을 출력할 것을 지시한다.
-
뷰는 지시받은대로 화면을 출력한다.
MVC의 기본구조를 알았으니 다음은 SpringBoot의 프로젝트 구조에 대해 알아보자.
Comments