Spring/Spring MVC
(SERVLET) 스프링 MVC 동작원리 정리
주누
2020. 2. 2. 01:26
web.xml 없이 동작시키는 방법
WebApplicationInitializer의 사용
public class WebApplication implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setServletContext(servletContext);
context.register(WebConfig.class);
context.refresh();
DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
ServletRegistration.Dynamic app = servletContext.addServlet("app", dispatcherServlet);
app.addMapping("/app/*");
}
}
스프링 3.0부터 지원하는 기능
정리
결국엔 (굉장히 복잡한) 서블릿.
= DispatcherServlet
DispatcherServlet 초기화
-
특정 타입에 해당하는 빈을 찾는다.
-
없으면 기본 전략을 사용한다. (DispatcherServlet.properties)
스프링 부트 사용하지 않는 스프링 MVC
-
서블릿 컨네이너(ex, 톰캣)에 등록한 웹 애플리케이션(WAR)에 DispatcherServlet을 등록한다.
-
web.xml에 서블릿 등록
-
또는 WebApplicationInitializer에 자바 코드로 서블릿 등록 (스프링 3.1+, 서블릿 3.0+)
-
세부 구성 요소는 빈 설정하기 나름.
스프링 부트 사용하지 않는 스프링 MVC (무엇이 Bean으로 등록되어있는지가 중요)
-
서블릿 컨네이너(ex, 톰캣)에 등록한 웹 애플리케이션(WAR)에 DispatcherServlet을 등록한다.
https://jwdeveloper.tistory.com/111
-
web.xml에 서블릿 등록
-
또는 WebApplicationInitializer에 자바 코드로 서블릿 등록 (스프링 3.1+, 서블릿 3.0+)
-
세부 구성 요소는 빈 설정하기 나름.
코드 참조
https://github.com/mike6321/Spring/tree/master/SpringMVC/java-servlet-demo