Spring Framework = Spring에서 지원하는 모든 기능들
Spring Web MVC
Spring Framework의 모듈 중 웹 계층을 담당하는 모듈
= 웹 프레임워크
중 하나
클라이언트의 요청을 편리하게 처리해주는 프레임워크
서블릿 API를 기반으로 클라이언트의 요청을 처리
Spring Web MVC
= Spring Web Framework
= Spring MVC
서블릿 컨테이너
중 하나이다.클라이언트의 요청을 받음
Controller
가 요청 데이터를 수신
비즈니스 로직을 통해 요청을 처리
Model
데이터가 생성됨
Controller
가 View
에게 Model
데이터를 전달
View
가 Model
데이터를 변환해서 응답 데이터 생성
클라이언트에게 응답
-> 서비스 계층의 비즈니스 로직을 통해서 Model을 생성한다.
✔️ View 의 형태
HTML 페이지를 출력
= SSR(Server Side Rendering)
PDF, Excel 등의 문서 형태로 출력
XML, JSON 등의 특정 형식의 포멧으로 변환해서 전달
= CSR(Client Side Rendering)
✅ JSON 이란?
Spring MVC에서 클라이언트 애플리케이션과 서버 애플리케이션이 주고 받는 데이터 형식
✔️ Controller의 역할
Model
과 View
의 중간에서 상호 작용해주는 역할DispatcherServlet: 클라이언트의 요청을 제일 먼저 전달 받는다.
HandlerMapping: 핸들러 객체를 찾아 DispatcherServlet에게 리턴해준다.
HandlerAdapter: Controller의 Handler 메서드를 호출한 후, Model 데이터를 리턴받아 DispatcherServlet에게 전달
Controller: Controller의 Handler 메서드는 비즈니스 로직을 처리한 후, 리턴받은 Model 데이터를 HandlerAdapter에게 전달한다.
ViewResolver: 전달받은 View 정보를 통해 View 객체를 찾아 리턴해준다.
View: Model 데이터를 변환해서 응답 데이터 생성
✅ DispatcherServlet의 역할
대부분의 Spring MVC 구성 요소들과 상호 작용하고 있다.
DispatcherServlet은 굉장히 바빠보이지만 실제로 요청에 대한 처리는 다른 구성 요소들에게 위임(Delegate)하고 있다.
-> DispatcherServlet이 애플리케이션의 가장 앞단에 배치되어 다른 구성요소들과 상호작용하면서 클라이언트의 요청을 처리하는 패턴을Front Controller Pattern
이라고 한다.
Controller 클래스
main() 메서드가 포함된 클래스 = 애플리케이션의 시작점
@SpringBootApplication
@EnableAutoConfiguration
)@ComponentScan
이 있어서, @Component
가 붙은 클래스를 찾아 Bean으로 등록한다.@SpringBootConfiguration
이 있어서, @Configuration
클래스를 추가적으로 임포트해준다.🚨 주의할 것! 🚨
@ComponentScan
시에, Entrypoint 클래스가 포함된 패키지와 그 하위 패키지 내의 클래스들만 탐색한다.
따라서 무조건 루트나 상위 패키지에 Entrypoint 클래스를 둘 것!
SpringApplication.run(Application.class, args);
💡 부트스트랩이란?
애플리케이션이 실행되기 전에, 여러 가지 설정 작업을 수행하여 실행 가능한 애플리케이션으로 만드는 단계