[SPRING] AbstractAnnotationConfigDispatcherServletInitializer와 WebApplicationInitializer를 사용할 때?
SPRINGAbstractAnnotationConfigDispatcherServletInitializer와 WebApplicationInitializer를 사용할 때?
나는 Spring 4.0.7과 함께 일하고있다.
JavaConfig를 통해 Spring MVC를 설정하는 방법에 대한 연구를했습니다.
실제로 어제까지이 두 옵션을 사용하여 두 가지 구성을 보았습니다.
참고 : (2)는 확장 용 클래스와 구현 용 클래스의 두 클래스입니다.
내가 컨버터, 포매터, 리소스 핸들러 등을 구성 할 수있는 많은 예제를 발견했기 때문에 (2)를 사용하고있다.
하지만 최근에 나는 StackOverflow에 대한 질문을 돕기 위해 노력했으며 (1) 존재한다는 것을 깨달았다. 나는 (1)에 대한 Google 개요를 작성했으며 (1)
내 질문은이 게시물의 제목이 설명하는 방법입니다.
고맙습니다
해결법
-
==============================
1.Servlet 3.0 사양이 발표됨에 따라 (거의) xml이없는 서블릿 컨테이너를 구성 할 수있게되었습니다. 이를 위해 Servlet 사양에는 ServletContainerInitializer가 있습니다. 이 클래스에서는 web.xml에서 전통적으로하는 것처럼 필터, 리스너, 서블릿 등을 등록 할 수 있습니다.
Servlet 3.0 사양이 발표됨에 따라 (거의) xml이없는 서블릿 컨테이너를 구성 할 수있게되었습니다. 이를 위해 Servlet 사양에는 ServletContainerInitializer가 있습니다. 이 클래스에서는 web.xml에서 전통적으로하는 것처럼 필터, 리스너, 서블릿 등을 등록 할 수 있습니다.
Spring은 WebApplicationInitializer 클래스를 처리하는 방법을 알고있는 SpringServletContainerInitializer 구현을 제공한다. Spring은 또한 여러분의 삶을 편하게하기 위해 몇 가지 기본 클래스를 제공하여 AbstractAnnotationConfigDispatcherServletInitializer가 그 중 하나이다. 등록 ContextLoaderListener (선택 사항) 및 DispatcherServlet을 사용하면 두 클래스에 대해로드 할 구성 클래스를 쉽게 추가하고 DispatcherServlet에 필터를 적용하고 서블릿 매핑을 제공 할 수 있습니다.
WebMvcConfigurerAdapter는 Spring MVC 구성을위한 DispatcherServlet에 의해로드 된 xml 파일을 대체하는 Spring MVC 구성을위한 것입니다. @Configuration 클래스에는 WebMvcConfigurerAdapter를 사용해야합니다.
@Configuration @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter implements WebApplicationInitializer { ... }
나는 기본적으로 서로 다른 두 가지 관심사이므로 혼합하는 것을 권장하지 않습니다. 첫 번째는 서블릿 컨테이너를 설정하는 것이고, 후자는 Spring MVC를 설정하는 것이다.
그것들을 2 개의 클래스로 나누고 싶을 것입니다.
구성의 경우.
@Configuration @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter { ... }
응용 프로그램을 부트 스트랩하는 경우.
public class MyWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class<?>[] getRootConfigClasses() { return new Class[] {RootConfig.class}; } protected Class<?>[] getServletConfigClasses() { return new Class[] {WebConfiguration .class}; } protected String[] getServletMappings() { return new String[] {"/"}; } }
추가 된 장점은 DispatcherServlet 및 / 또는 ContextLoaderListener를 수동으로 구성하는 대신 Spring에서 제공하는 편의 클래스를 사용할 수 있다는 것입니다.
-
==============================
2.서블릿 컨테이너가 시작되는 방법을 처음부터 살펴볼 가치가 있습니다.
서블릿 컨테이너가 시작되는 방법을 처음부터 살펴볼 가치가 있습니다.
그래서 SpringServletContainerInitializer는 WebApplicationInitializer를 구현하는 올바른 클래스를 찾아야합니다. 두 가지 방법으로 문제를 해결할 수 있습니다.
또한 WebMvcConfigurerAdapter가 WebApplicationInitializer와 혼동되어서는 안된다는 사실을 강조하고 싶습니다. 이름에서 알 수 있듯이 "Mvc"구성과 관련이 있습니다. WebMvcConfigurer에서 비어있는 메소드를 구현하는 어댑터 클래스입니다. @EnableWebMvc 주석을 사용하여 Mvc 컨트롤러를 구성 할 때이를 사용합니다.
희망이 도움이됩니다.
from https://stackoverflow.com/questions/26676782/when-use-abstractannotationconfigdispatcherservletinitializer-and-webapplication by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 의존성 주입을 제대로하는 법 (Spring)? [복제] (0) | 2019.01.25 |
---|---|
[SPRING] Spring은 런타임시 bean 구현을 선택한다. (0) | 2019.01.25 |
[SPRING] 저장소 패턴 - 어떻게 이해해야하며 "복잡한"엔티티와 어떻게 작동합니까? (0) | 2019.01.25 |
[SPRING] AbstractAnnotationConfigDispatcherServletInitializer를 확장 할 때 getServletConfigClasses ()와 getRootConfigClasses () 비교 (0) | 2019.01.25 |
[SPRING] 스프링 4 대 REST 웹 서비스 용 저지 (0) | 2019.01.25 |