스프링(Spring) 이란?
- 정확한 표현으로는 '스플링 프레임워크(Spring Framework)' 스프링 프레임워크는 자바에서 가장 많이 사용되는 프레임 워크 의존성 주입(DI, Dependency Injection)과 제어역전(IOC, Inversion of Control), 관점 지향 프로그래밍(AOP)이 가장 중요한 요소
- 위 요소들을 통해 느슨한 결합(Loose Coupling)을 달성할 수있음
- 위와 같이 느슨한 결합으로 개발한 어플리케이션은 단위 테스트를 수행하기 용이함
스프링 부트가 나오게 된 이유
- 스프링 부트는 단지 실행만 하면 되는 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.
- 스프링은 다양한 기능을 제공하고 있지만, 그 기능을 사용하기 위한 설정에 많은 시간이 걸림
스플링 부트가 제공하는 기능
- 스프링 부트는 자동설정(AutoConfiguration)을 이용
- 어플리케이션을 개발하면서 사용되는 디펜던시들은 호환되는 버전으로 관리해줘야 함
- 이런 복잡도를 줄이기 위해 스프링 부트는 SpringBoot-Starter를 제공하여 자동으로 호환되는 버전으로 관리
스프링 부트 프로젝트의 starter 디펜던시
MVC 패턴
| MVC (Model View Controller)
- 디자인 패턴 중 하나인 MVC 패턴은 Model, View, Controller의 줄임말로 어플리케이션을 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴을 의미
- 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 설계가 가능
컨트롤러(Controller)
모델(Model)과 뷰(View) 사이에서 브릿지 역할을 수행
앱의 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함
사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함
컨트롤러로 들어온 요청은 어떻게 처리할지 결정하여 모델로 요청을 전달함
예) 쇼핑몰에서 상품을 검색하면 그 키워드를 컨트롤러가 받아 모델과 뷰에 적절하게 입력을 처리하여 전달함
모델(Model)
데이터를 처리하는 영역
데이터베이스와 연동을 위한 DAO(Data Access Object)와 데이터의 구조를 표현하는 DO(Data Object)로 구성됨
예) 검색을 위한 키워드가 넘어오면 데이터베이스에서 관련된 상품의 데이터를 받아 뷰에 전달
뷰(View)
데이터를 보여주는 화면 자체의 영역을 뜻함
사용자 인터페이스(UI) 요소들이 여기에 포함되며, 데이터를 각 요소에 배치함
뷰에서는 별도의 데이터를 보관하지 않음
예) 검색 결과를 보여주기 위해 모델에서 결과 상품 리스트 데이터를 받음