스프링 MVC 세팅
1.DispatcherServlet 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected String[] getServletMappings () // DispatcherServlet을 /에 매핑한다. { return new String[] { "/" }; } @Override protected Class<?>[] getRootConfigClasses () { return new Class<?>[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses () // 설정 클래스를 명시한다. { return new Class<?>[] { WebConfig.class } } } | cs |
- AbstractAnnotationConfigDispatcherServletInitializer를 이용해 DispatcherSerlvet을 설정하는 것은 web.xml 파일을 이용해 설정했던 것과 동일한 기능을 한다.
- 이러한 방식의 설정은 apache-tomcat 7과 같이 서블릿 3.0 이상을 지원하는 서버에 배포될 때만 동작한다.
- getServletConfigClasses() 에서 리턴된 @Configuration 클래스들은 DispatcherServlet의 애플리케이션 컨텍스트에 대한 핀들을 정의한다.
- getRootConfigClasses() 에서 리턴된 @Configuration 클래스들은 ContextLoaderListender가 생성한 애플리케이션 컨텍스트를 설정하는데 사용된다.
2. 스프링 MVC 활성화
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @Configuration @EnableWebMvc // 스프링 MVC 활성화 @ComponentScan("spittr.web") // component-scaning 활성화 public class WebConfig extends WebMvcConfigurerAdapter { @Bean public ViewResolver viewResolver () { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); // JSP 뷰 리졸버 설정 resolver.setPrefix("/WEB-INF/views/"); resolver.serSuffix(".jsp"); resolver.setExposeContextBeansAsAttribute(true); return resolver; } @Override public void configureDefaultServletHandling (DefaultServletHandlerConfig configurer) // 정적 컨텐츠 처리 설정 { configurer.enable(); } } | cs |
- @ComponentScan 어노테이션으로 이 애플리케이션에서는 spittr.web 패키지에서 컴포넌트를 스캔한다.
- 이 설정은 XML 설정방법에서 <mvc:annotation-driven> 으로 스프링 MVC를 활성화 시키는 것과 동일한 역할이다.
- viewResolver()에서 설정한 내용으로 뷰 이름이 'home' 일 때 실제 파일은 /WEB-INF/views/home.jsp 가 될 것이다.
- configureDefaultServletHandling() 에서 설정한 내용으로 고정적인 리소스들에 대한 요청은 DispatcherServlet이 직접 처리하지 않고 서블릿 컨테이너의 디폴트 서블릿 전달을 요청한다.
1 2 3 | @Configuration @ComponentScan(beanPackages={"spittr"}, excludeFilters={ @Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class } public class RootConfig { } | cs |
- 웹 설정에서는 아직 신경쓰지 않아도 되는 설정이다.
3. 컨트롤러 작성
1 2 3 4 5 6 7 8 9 | @Controller // 컨트롤러 선언 public class HomeController { @RequestMapping(value="/", method=GET) // /에 대한 GET 요청을 처리 public String home () { return "home"; // 뷰 이름은 home 실제 파일은 /WEB-INF/views/home.jsp } } | cs |
- @Controller는 @Component 에 기반을 둔 어노테이션으로 앞서 @ComponentScan 으로 설정한 패키지 하위에만 있으면 컴포넌트 스캐너가 자동적으로 이 클래스를 빈으로 선언하게된다.
- @RequestMapping은 URL을 기준으로 요청에 대한 처리를 맡길 클래스, 메서드를 설정할 수 있다.
|
이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다. 일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다. |
'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글
JSP 라이브러리 이용하기 (0) | 2018.06.13 |
---|---|
스프링 뷰 리졸버 정의하기 (0) | 2018.06.13 |
스프링에서의 요청 처리 순서 (0) | 2018.05.30 |
어드바이스에서 파라메터 처리 (0) | 2018.05.26 |
@Around (0) | 2018.05.26 |