*이 글은 SpringBoot가 아닌 순수 Spring MVC에 대해서만 설명합니다.*
백엔드 공부를 자바(Java)로 시작한 사람들이라면,
서버로 넘어가기 전에 필수로 접하는 기술이 바로 스프링 프레임워크(Spring Framework).
줄여서 스프링이라고 하는 기술이다.
자바라는 코드는 오래된 만큼 속도도 느리고,
코드 작성이 다른 코드들에 비해서 너무 어렵다는 단점들이 있다.
이 단점들을 해결해주기 위해서 나타난 백엔드 개발 프레임워크가 바로 스프링인 것이다.
그럼 또 여기서 하나의 궁금증.
프레임워크는 또 무엇인가?
아주 쉽게 설명하자면,
다양한 기능들을 하나로 모아두고 편하게 사용하기 위해서 만들어놓은 툴이라고 생각하면 편하다.
매번 다양한 물품들을 각 매장에 가서 사면 불편하니까 모아둔 편의점 같은 느낌이랄까.
자, 그러면 스프링의 주요특징들을 알아보자.
- 유연한 구조: 컴포넌트를 쉽게 교체하고 확장할 수 있다.
- 의존성 주입(DI): 객체 간의 의존성을 효과적으로 관리하여 코드의 결합도를 낮춰준다.
- 애노테이션 기반 설정: XML 설정을 최소화하고 애노테이션을 통해 직관적으로 설정할 수 있다.
음. 사실 이렇게만 보면 정말 모르겠다.
나도 스프링이 뭔지에 대해서만 몇일은 고민한 거 같은데
일단 기본적으로 저런 특징들이 있다고 한다.
저런 특징들의 뜻을 이해하려면 구조부터 짚고가는 게 매우 편할 것이다.
Spring MVC 는 크게 5개의 구조로 이루어져있다고 보면 된다.
- DispatcherServlet
- 모든 요청을 중앙에서 처리하고 적절한 컨트롤러에 전달해준다.
- Controller
- 클라이언트의 요청을 처리하고, 모델 데이터를 생성하여 뷰에 전달한다.
- @Controller 애노테이션을 사용하여 선언.
- Model
- 애플리케이션의 데이터 및 비즈니스 로직을 포함.
- 뷰에 데이터를 전달하기 위해 사용된다.
- View
- 모델 데이터를 사용자에게 렌더링해준다.
- 주로 JSP, Thymeleaf 등의 템플릿 엔진을 사용한다.
- ViewResolver
- 논리적 뷰 이름을 실제 뷰 구현으로 변환해준다.
- 스프링에서 제공하는 다양한 뷰 리졸버가 존재.
이 구조도 사실 이렇게 써두면 너무 어렵기만 하다.
조금 더 쉽고 순차적으로 작동 방식을 알아보자.
Spring MVC Application의 실행 과정!
1. 클라이언트의 요청이 DispatcherServlet에 도착한다.
우리가 Spring에게 한 요청이 DispatcherServlet에 도착하게 된다.
DispatcherServlet은 쉽게 말해서 중앙에서 처리해주는 컨트롤타워다.
2. DispatcherServlet은 요청 URL을 기반으로 적절한 컨트롤러를 찾아준다.
이제 받아온 요청을 DispatcherServlet이 확인하고 만들어둔 컨트롤러에 뿌려준다.
컨트롤타워에서 요청했으면, 이 요청을 잘 수행할 수 있는 곳에 뿌려줘야겠지?
3. 컨트롤러는 비즈니스 로직을 처리하고, 모델 데이터를 생성한다.
우리가 만들어둔 컨트롤러에서 지정한 동작을 처리하고,
그것을 우리 사용자의 화면에 보여줄 수 있는 모델 데이터를 생성하게 된다.
4. 컨트롤러는 모델 데이터를 뷰에 전달하기 위해 DispatcherServlet에 반환한다.
이제 모델 데이터(화면에서 실행된 걸 보여줄 데이터)가 완성되었으면,
다시 컨트롤타워로 보내준다.
5. DispatcherServlet은 ViewResolver를 통해 실제 뷰로 변환해준다.
또 컨트롤타워 형님은 이제 받아온 모델데이터를 변환해서
진짜 우리에게 보여주도록 변환해주는 작업을 해준다.
누구랑 같이? ViewResolver와 함께.
6. 뷰는 모델 데이터를 사용하여 HTML 페이지를 렌더링하고, 클라이언트에게 응답을 반환해준다.
마지막으로 모델데이터를 활용해서 HTML 페이지(하지만 우린 보통 JSP파일로 만들어둔다.)를 불러오고,
이 작업이 끝나야 우리가 이제 화면에서 보이는 것들이 나타나게 되는 것이다.
자 대충 이런 과정들을 통해서 결국 사용자의 화면에 올려주게 되는 것이다.
이제 악명높은 스프링의 설정과정들을 통과해서
HTML을 JSP 파일로 변환해서 만들어 볼 준비만 하면 된다.
설정은 처음에는 정말 힘드니까 나도 다음 글들에서는 최선을 다해서
내 눈높이 = 초보자의 눈높이.
절대 걱정마라.
내가 이해했으면 모두가 이해할 수 있다.
쉽게 설명해보도록 노력해보겠..음.