📖 학습 목표

일단, 아래의 사이트에 접속하면 다음과 같은 페이지가 나온다.

Spring Initializr

image.png

빌드 툴(Maven/Gradle - 최근에는 Gradle이 주로 사용된다), 서버 개발 시 사용할 언어(Java/Kotlin/Groovy), 스프링 부트 버전, 자바 버전, 의존성 등을 설정해 주고 Generate를 눌러 프로젝트를 만들어 준다.

참고자료 - MVC 패턴

MVC 패턴이란, 사용자 인터페이스, 데이터 및 논리 제어를 구현하는 데 사용되는 소프트웨어 디자인 패턴으로, 비즈니스 로직과 화면을 구분하는데 중점을 두고 모델, 뷰, 컨트롤러라는 개념으로 역할을 나누어 일련의 작업을 처리하므로 관심사/업무 분리/향상된 관리를 제공한다.

모델은 데이터와 관련된 부분을 담당해 값과 기능을 가지는 객체로, 컨트롤러에게 받은 데이터를 가공하는 역할을 한다. 이러한 모델은 사용자가 편집하길 원하는 모든 데이터를 지니고, 뷰나 컨트롤러에 대한 어떤 정보도 가지고 있지 않아야 하며, 모델에서 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다는 제약 조건이 존재한다.

는 입력값이나 체크박스와 같은 UI 요소로, 컨트롤러에게 받는 모델의 데이터를 사용자에게 시각적으로 보여주는 역할을 하며, 데이터 일관성 유지를 위해 모델이 가지고 있는 정보를 따로 저장해선 안 되고, MVC 간 계층적 독립성 유지를 위해 모델이나 컨트롤러에 대해 알 필요가 없으며, 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다는 제약 사항이 있다. (이때 Observer 사용)

컨트롤러는 모델과 뷰 사이에서 데이터 흐름을 제어하는 부분으로, 사용자가 접근한 주소에 따라 요청을 파악하고, 적절한 메소드를 호출해 서비스에서 비즈니스 로직을 처리한 뒤 결과를 Model에 저장하여 View에 전달하는 역할을 수행한다. 즉, 둘 사이의 흐름을 제어하면서 모델과 뷰의 역할을 분리하는 역할을 하는 것이다. 이를 위해서 모델이나 뷰에 대해 알고 있어야 하고, 모델이나 뷰의 변경을 모니터링해 적절히 처리해야 한다는 제약 조건을 지닌다.

이러한 모델/뷰와 컨트롤러의 주요 차이점은 모델과 뷰는 각각의 역할에 충실하지만, 컨트롤러는 둘 사이 흐름 제어에 충실하다는 것이다.