Loading...
Spring Framework Reference Documentation 7.0.2의 Servlet Config의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Servlet 환경에서는 web.xml 파일의 대안으로 또는 그것과 조합하여 Servlet 컨테이너를
프로그래밍 방식으로 설정할 수 있는 옵션이 있습니다.
다음 예제는 DispatcherServlet을 등록합니다:
1import org.springframework.web.WebApplicationInitializer; 2 3public class MyWebApplicationInitializer implements WebApplicationInitializer { 4 5 @Override 6 public void onStartup(ServletContext container) { 7 XmlWebApplicationContext appContext = new XmlWebApplicationContext(); 8 appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); 9 10 ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext)); 11 registration.setLoadOnStartup(1); 12 registration.addMapping("/"); 13 } 14}
1import org.springframework.web.WebApplicationInitializer 2 3class MyWebApplicationInitializer : WebApplicationInitializer { 4 5 override fun onStartup(container: ServletContext) { 6 val appContext = XmlWebApplicationContext() 7 appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml") 8 9 val registration = container.addServlet("dispatcher", DispatcherServlet(appContext)) 10 registration.setLoadOnStartup(1) 11 registration.addMapping("/") 12 } 13}
WebApplicationInitializer는 Spring MVC에서 제공하는 인터페이스로서,
당신의 구현이 감지되고 자동으로 어떤 Servlet 3 컨테이너도
초기화하는 데 사용되도록 보장합니다.
AbstractDispatcherServletInitializer라는 이름의 WebApplicationInitializer
추상 기본 클래스 구현은 서블릿 매핑과
DispatcherServlet 설정의 위치를 지정하기 위해 메서드를 오버라이드함으로써
DispatcherServlet을 등록하는 일을 더욱 쉽게 만듭니다.
다음 예제가 보여 주듯이, 이는 Java 기반 Spring 설정을 사용하는 애플리케이션에 권장됩니다:
1public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 2 3 @Override 4 protected Class<?>[] getRootConfigClasses() { 5 return null; 6 } 7 8 @Override 9 protected Class<?>[] getServletConfigClasses() { 10 return new Class<?>[] { MyWebConfig.class }; 11 } 12 13 @Override 14 protected String[] getServletMappings() { 15 return new String[] { "/" }; 16 } 17}
1class MyWebAppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() { 2 3 override fun getRootConfigClasses(): Array<Class<*>>? { 4 return null 5 } 6 7 override fun getServletConfigClasses(): Array<Class<*>>? { 8 return arrayOf(MyWebConfig::class.java) 9 } 10 11 override fun getServletMappings(): Array<String> { 12 return arrayOf("/") 13 } 14}
XML 기반 Spring 설정을 사용하는 경우, 다음 예제가 보여 주듯이
AbstractDispatcherServletInitializer에서 직접 확장해야 합니다:
1public class MyWebAppInitializer extends AbstractDispatcherServletInitializer { 2 3 @Override 4 protected WebApplicationContext createRootApplicationContext() { 5 return null; 6 } 7 8 @Override 9 protected WebApplicationContext createServletApplicationContext() { 10 XmlWebApplicationContext cxt = new XmlWebApplicationContext(); 11 cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); 12 return cxt; 13 } 14 15 @Override 16 protected String[] getServletMappings() { 17 return new String[] { "/" }; 18 } 19}
1class MyWebAppInitializer : AbstractDispatcherServletInitializer() { 2 3 override fun createRootApplicationContext(): WebApplicationContext? { 4 return null 5 } 6 7 override fun createServletApplicationContext(): WebApplicationContext { 8 return XmlWebApplicationContext().apply { 9 setConfigLocation("/WEB-INF/spring/dispatcher-config.xml") 10 } 11 } 12 13 override fun getServletMappings(): Array<String> { 14 return arrayOf("/") 15 } 16}
AbstractDispatcherServletInitializer는 또한 Filter 인스턴스를 추가하고
그들이 DispatcherServlet에 자동으로 매핑되도록 하는 편리한 방법을
제공하며, 다음 예제가 그것을 보여 줍니다:
1public class MyWebAppInitializer extends AbstractDispatcherServletInitializer { 2 3 // ... 4 5 @Override 6 protected Filter[] getServletFilters() { 7 return new Filter[] { 8 new HiddenHttpMethodFilter(), new CharacterEncodingFilter() }; 9 } 10}
1class MyWebAppInitializer : AbstractDispatcherServletInitializer() { 2 3 // ... 4 5 override fun getServletFilters(): Array<Filter> { 6 return arrayOf(HiddenHttpMethodFilter(), CharacterEncodingFilter()) 7 } 8}
각 필터는 그 구체 타입에 기반한 기본 이름으로 추가되고
DispatcherServlet에 자동으로 매핑됩니다.
AbstractDispatcherServletInitializer의 isAsyncSupported protected 메서드는
DispatcherServlet과 그것에 매핑된 모든 필터에서 비동기 지원을
활성화하기 위한 단일 지점을 제공합니다.
기본적으로, 이 플래그는 true로 설정되어 있습니다.
마지막으로, DispatcherServlet 자체를 더 커스터마이즈해야 하는 경우,
createDispatcherServlet 메서드를 오버라이드할 수 있습니다.
Web MVC Config
Processing