반응형
SpringBoot 도 SpringMVC 의 요청 - 응답과 똑같이 처리가 되는데
요청 처리 부분에서 차이점이 존재한다.
SpringBoot 와 SpringMVC 의 큰 차이점 중 하나는 '설정파일 구성 여부' 이다.
SpringMVC 는 개발자가 수동으로 구성하는 반면,
SpringBoot 는 자동으로 구성된다.
요청-응답 과정도 마찬가지…
차이점
순서 | SpringMVC | SpringBoot |
클라이언트가 요청을 보냄 | - | - |
DispatcherServlet에 요청이 도착 | xml 을 만들어서 요청 처리방법 정의 web.xml 파일에 DispatcherServlet을 정의하고, 별도의 XML 파일(예: dispatcher-servlet.xml)이나 Java 설정 클래스를 통해 요청 처리 방법을 구성 |
자동으로 (DispatcherServletAutoConfiguration 클래스)DispatcherServlet을 설정하고, 모든 요청을 이 서블릿으로 라우팅함 물론 @Bean으로 직접 커스터마이징이 가능 |
HandlerMapping을 사용하여 적절한 핸들러(컨트롤러)를 찾음 | xml 파일을 통해 개발자가 수동으로 (HandlerMapping을 통해 ) 어떤 컨트롤러가 요청을 처리할지 결정 | Spring Boot는 기본적으로 여러 HandlerMapping 구현체를 제공, 가장 적합한 핸들러를 알아서 찾음 |
Spring Boot의 DispatcherServlet 자동 설정
기본적으로는 다음과 같은 방식으로…
- DispatcherServlet 자동 등록: Spring Boot는 DispatcherServletAutoConfiguration 클래스를 통해 DispatcherServlet을 자동으로 등록
- 기본 경로 설정: 기본적으로 모든 경로(/*)에 대해 DispatcherServlet이 매핑
- 기본 설정: spring.mvc 네임스페이스를 통해 DispatcherServlet의 설정 조정
보통 application.properties 파일에서 이렇게 정의함
spring.mvc.servlet.path=/api
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
application.properties 또는 application.yml 파일을 통해 추가 설정을 할 수 있다.
커스터마이징 DispatcherServlet
Spring Boot에서 DispatcherServlet을 커스터마이징하려면, @Bean으로 직접 정의할 수 있다.
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
@Configuration
public class WebConfig {
@Bean
public ServletRegistrationBean<DispatcherServlet> dispatcherServlet() {
DispatcherServlet dispatcherServlet = new DispatcherServlet();
ServletRegistrationBean<DispatcherServlet> registrationBean = new ServletRegistrationBean<>(dispatcherServlet, "/api/*");
registrationBean.setName("dispatcherServlet");
return registrationBean;
}
}
반응형
댓글