반응형
DispatcherServlet
Spring MVC는 dispatcherServlet을 사용하기 위해서는 web.xml에 정의를 해주었어야 했다.
하지만 web.xml에 설정하지 않고도 다른 Java 파일로 설정할 수 있는 방법이 있다.
기존의 web.xml에 설정방식은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> | cs |
XML에 정의한 서블릿 설명은 다음과 같다.
1. 이름은 dispatcher 이다.
2. org.springframework.web.servlet.DispatcherServlet의 인스턴스이다.
3. contextConfigLocation에 위치한 파일들과 함께 초기화 될 것이다.
load-on-startup은 정수값이 기록되는데 여러가지 서블렛이 로드될 때 순서를 정의하는 것이다.
정수값이 작은 서블릿부터 먼저 로드된다.
Servlet 3.0이 출시되면서 web.xml은 옵션이 되었고 DispatcherServlet 설정을 Java를 사용해서 정의할 수 있게 되었다.
방법은 하단의 예제와 같이 WebApplicationInitializer를 구현하여 정의할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class MyWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { XmlWebApplicationContext context = new XmlWebApplicationContext(); context.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); ServletRegistration.Dynamic dispatcher = container .addServlet("dispatcher", new DispatcherServlet(context)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } } | cs |
하지만 위의 설정에서도 config에 관련된 xml 파일이 존재해야 하기 때문에 xml을 완전하게 사용하지 않기 위해서 다음과 같이 정의하여 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class MyWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); // Java Config 설정한 클래스 위치 추가. context.setConfigLocation("com.example.app.config"); container.addListener(new ContextLoaderListener(context)); ServletRegistration.Dynamic dispatcher = container .addServlet("dispatcher", new DispatcherServlet(context)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } } | cs |
단 이 방식을 사용하기위해서는 xml을 사용하지 않기때문에 root-servlet.xml, servlet-context.xml 들도 모두 java config로 선언해야 한다.
반응형
'web > Spring' 카테고리의 다른 글
Spring Interceptor와 Filter에서 POST 방식으로 전달된 JSON 데이터 처리하기 (0) | 2018.05.27 |
---|---|
Java Json Library Jacson Annotation 소개 (0) | 2018.05.27 |
Spring Context 종류 및 특성 (0) | 2018.05.27 |
Spring Rest Client Feign 소개 (1) | 2018.05.27 |
스프링 CacheManager Ehcache (0) | 2018.05.27 |