개발에 시작하기 앞서 MVC에 대해 간단히 알아보려 한다.
스프링과 스프링부트 모두 MVC패턴을 화용해 개발을 진행하는데 과연 MVC가 무엇인가?
MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.
MVC | 소개 | 툴 |
---|---|---|
Model | 데이터와 비즈니스 로직 관리 | Xml, Query, Service, Dao |
View | 레이아웃과 화면 처리 | Jquery, Javascript, Ajax, Html, Jsp |
Controller | 명령을 모델과 뷰 부분으로 라우팅 | Java, Control |
앱이 포함해야할 데이터가 무엇인지를 정의
데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알림(간혹 컨트롤러에 알리기도 함)
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
: 데이터 변경이 일어났을 때 모델에서 화면 UI를 직접 조정해서 수정할 수 있도록 뷰를 참조하는 내부 속성값을 가지면 안 된다
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
: 모델의 속성 중 텍스트 정보가 변경이 된다면, 이벤트를 발생시켜 누군가에게 전달해야 하며, 누군가 모델을 변경하도록 요청하는 이벤트를 보냈을 때 이를 수신할 수 있는 처리 방법을 구현해야함
앱의 데이터를 보여주는 방식을 정의
- 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다.
: 모델과 같은 자기 자신의 빼고는 다른 요소는 참조하거나 어떻게 동작하는지 알아서는 안됨 -> 뷰는 그저 데이터를 받으면 화면에 표시하는 역할만 해야함
- 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.
: 변경 통지를 구현
: 모델이나 뷰는 서로의 존재를 모르고, 변경을 외부로 알리고, 수신하는 방법만 가지고 있는데 이를 컨트롤러가 중재하기 위해 모델과 그에 관련된 뷰에 대해서 알고 있어야 한다.
- 모델이나 뷰에 대해서 알고 있어야 한다.
: 모델이나 뷰의 변경 통지를 받으면 이를 해석해서 각각의 구성 요소에게 통지를 해야 한다. 또한, 애플리케이션의 메인 로직은 컨트롤러가 담당
- 모델이나 뷰의 변경을 모니터링 해야 한다.
참고문헌
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://m.blog.naver.com/jhc9639/220967034588