Loading...
Spring Framework Reference Documentation 7.0.2의 DispatcherServlet의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
많은 다른 웹 프레임워크와 마찬가지로 Spring MVC는 프론트 컨트롤러
패턴을 중심으로 설계되었으며, 중앙 Servlet인 DispatcherServlet이
요청 처리을 위한 공유 알고리즘을 제공하고, 실제 작업은 설정 가능한
위임 컴포넌트에 의해 수행됩니다. 이 모델은 유연하며 다양한 워크플로를 지원합니다.
DispatcherServlet은 다른 모든 Servlet과 마찬가지로 Java 설정 또는
web.xml을 사용하여 Servlet 명세에 따라 선언되고 매핑되어야 합니다.
그 다음, DispatcherServlet은 Spring 설정을 사용하여
요청 매핑, 뷰 리졸루션, 예외 처리,
그 외 항목에
필요한 위임 컴포넌트를 검색합니다.
다음 Java 설정 예제는 Servlet 컨테이너에 의해 자동으로 감지되는
DispatcherServlet을 등록하고 초기화합니다
(Servlet 설정를 참조하십시오):
1public class MyWebApplicationInitializer implements WebApplicationInitializer { 2 3 @Override 4 public void onStartup(ServletContext servletContext) { 5 6 // Load Spring web application configuration 7 AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 8 context.register(AppConfig.class); 9 10 // Create and register the DispatcherServlet 11 DispatcherServlet servlet = new DispatcherServlet(context); 12 ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet); 13 registration.setLoadOnStartup(1); 14 registration.addMapping("/app/*"); 15 } 16}
1class MyWebApplicationInitializer : WebApplicationInitializer { 2 3 override fun onStartup(servletContext: ServletContext) { 4 5 // Load Spring web application configuration 6 val context = AnnotationConfigWebApplicationContext() 7 context.register(AppConfig::class.java) 8 9 // Create and register the DispatcherServlet 10 val servlet = DispatcherServlet(context) 11 val registration = servletContext.addServlet("app", servlet) 12 registration.setLoadOnStartup(1) 13 registration.addMapping("/app/*") 14 } 15}
| 💡 | ServletContext API를 직접 사용하는 것 외에도<br>AbstractAnnotationConfigDispatcherServletInitializer를 상속하고 특정 메서드를 override할 수 있습니다<br>(컨텍스트 계층 구조의 예제를 참조하십시오). |
| 💡 | 프로그래밍 방식 사용 사례의 경우, GenericWebApplicationContext를<br>AnnotationConfigWebApplicationContext의 대안으로 사용할 수 있습니다.<br>자세한 내용은<br>GenericWebApplicationContext<br>javadoc을 참조하십시오. |
다음 web.xml 설정 예제는 DispatcherServlet을 등록하고 초기화합니다:
1<web-app> 2 3 <listener> 4 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 5 </listener> 6 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>/WEB-INF/app-context.xml</param-value> 10 </context-param> 11 12 <servlet> 13 <servlet-name>app</servlet-name> 14 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 15 <init-param> 16 <param-name>contextConfigLocation</param-name> 17 <param-value></param-value> 18 </init-param> 19 <load-on-startup>1</load-on-startup> 20 </servlet> 21 22 <servlet-mapping> 23 <servlet-name>app</servlet-name> 24 <url-pattern>/app/*</url-pattern> 25 </servlet-mapping> 26 27</web-app>
| 💡 | Spring Boot는 다른 초기화 시퀀스를 따릅니다. Servlet 컨테이너의 라이프사이클에<br>hooking하는 대신, Spring Boot는 Spring 설정을 사용하여 자기 자신과<br>임베디드 Servlet 컨테이너를 부트스트랩합니다. Filter 및 Servlet 선언은<br>Spring 설정에서 감지되어 Servlet 컨테이너에 등록됩니다.<br>자세한 내용은<br>Spring Boot documentation을 참조하십시오. |
Spring Web MVC
Context Hierarchy