Blog

[Spring]12 Spring MVC란? 과거와 비교

Author
Summary
MVC, Spring MVC 요약
Category
Study
Tags
Spring
Favorite
Memory Date
2023/08/28
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
MVC란? Model-View-Controller 디자인 패턴
각각의 역할을 분리하여 설계, 구현, 협업에서 유리한 디자인 패턴 중 하나다.

Model

데이터와 비즈니스 로직을 담당
데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행

View

사용자 인터페이스를 담당
사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현

Controller

Model과 View 사이의 상호작용을 조정하고 제어합
사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트
Web Servlet은 어땠을까?
이게 고작 1개의 기능인데, 다수의 요청 메소드는 위 구조와 유사한 것을 반복하여 개발해야 하는 불편함이 있다.
Web Servlet의 API 구성 모습이다.
@WebServlet(urlPatterns = "/user/logout") public class UserLogoutServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { // ... } } ... @WebServlet(urlPatterns = "/user/login") public class UserLoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { // ... } } ... @WebServlet(urlPatterns = "/user/signup") public class UserSingUpServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { // ... } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { // ... } }
Java
복사
위 코드 처럼 Servlet 방식은 코드량이 너무 많다.
그럼 Spring MVC란? 어떻게 패턴을 적용한 것인가?
더 복잡해보인다. 하지만? 실제로 개발자는 빨간 박스인 Controller만 잘 구성하면 된다. 다른 일들은 Spring이 해준다. 그게 Framework의 장점이고 특징이다.
Spring Web MVC는 Servlet API를 기반으로 구축된 웹 프레임워크다.
Spring MVC는 중앙에 있는 DispatcherServlet요청을 처리하기 위한 공유 알고리즘을 제공하는 Front Controller 패턴을 중심으로 설계한다.
하지만, Spring MVC 이후로는 아래 코드처럼 간결하고 정리된 형태로 여러 요청 메소드를 구성 할 수 있게 되었다.
@Controller @RequestMapping("/user") public class UserController { @GetMapping("/login") public String login() { // ... } @GetMapping("/logout") public String logout() { // ... } @GetMapping("/signup") public String signup() { // ... } @PostMapping("/signup") public String registerUser(SignupRequestDto requestDto) { // ... } }
Java
복사
Spring MVC는 효율적인 API 처리를 위해 Front Controller 패턴을 만듦
이제는 API 마다 파일을 만들 필요 없음(Servlet 방식은 API마다 하나씩 클래스 파일을 만들어야 함, 중복 코드가 너무 많음)
보통 하나의 Contoller 에 관련된 API만 모음
유사한 성격의 API 를 하나의 Controller 로 관리
간단히 Spring은 가운데 Servlet부분을 프레임워크로 제공하는 것이며,
나(개발자)는 Controller구성만, 프론트 개발자는 Client만 구성하면 된다.
ControllerDispathcerServlet Client
그만큼 Spring MVC는 말 그대로 개발자는 소프트웨어의 핵심 설계인 M과 V와 C에 개발에 집중 할 수 있으며 Spring은 그 연결들을 어노테이션 및 각종 클래스, 메소드, 설정 파일 등으로 지원하는 느낌으로 생각하면 된다.