| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- javascript
- Spring
- MySQL
- 알고리즘
- node
- effective
- 리뷰
- Git
- elasticsearch
- java8
- nodejs
- Web
- 엘라스틱서치
- 스프링
- 독후감
- java
- jface
- Spring Boot
- 후기
- RCP
- 자바스크립트
- 맛집
- 자바
- 인터페이스
- error
- JPA
- kibana
- 이펙티브
- 백준
- boot
Archives
- Today
- Total
wedul
스프링 DispatcherServlet 설정 방법 본문
반응형
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 소개 (2) | 2018.05.27 |
| 스프링 CacheManager Ehcache (0) | 2018.05.27 |