본문 바로가기

Spring/Spring MVC

(SERVLET) 스프링 MVC 동작원리 정리

 

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 초기화

  1. 특정 타입에 해당하는 빈을 찾는다.

  2. 없으면 기본 전략을 사용한다. (DispatcherServlet.properties)

스프링 부트 사용하지 않는 스프링 MVC

  • 서블릿 컨네이너(ex, 톰캣)에 등록한 웹 애플리케이션(WAR)에 DispatcherServlet을 등록한다.

    • web.xml에 서블릿 등록

    • 또는 WebApplicationInitializer에 자바 코드로 서블릿 등록 (스프링 3.1+, 서블릿 3.0+)

  • 세부 구성 요소는 빈 설정하기 나름.

스프링 부트 사용하지 않는 스프링 MVC (무엇이 Bean으로 등록되어있는지가 중요)

  • 서블릿 컨네이너(ex, 톰캣)에 등록한 웹 애플리케이션(WAR)에 DispatcherServlet을 등록한다.

https://jwdeveloper.tistory.com/111

 

(SpringBoot) 내장 웹 서버 이해

스트링 부트는 서버가 아닙니다. 가끔 스프링 부트가 구동 시에 서버를 함께 구동시켜주니 서버로 생각하는 사람이 있지만 public static void main(String[] args) { SpringApplication springApplication = new..

jwdeveloper.tistory.com

    • web.xml에 서블릿 등록

    • 또는 WebApplicationInitializer에 자바 코드로 서블릿 등록 (스프링 3.1+, 서블릿 3.0+)

  • 세부 구성 요소는 빈 설정하기 나름.


코드 참조

https://github.com/mike6321/Spring/tree/master/SpringMVC/java-servlet-demo

 

mike6321/Spring

Contribute to mike6321/Spring development by creating an account on GitHub.

github.com