programing

AbstractAnnotationConfigDispatcherServlet을 사용하는 경우이니셜라이저 및 웹어플리케이션이니셜라이저?

testmans 2023. 9. 7. 21:34
반응형

AbstractAnnotationConfigDispatcherServlet을 사용하는 경우이니셜라이저 및 웹어플리케이션이니셜라이저?

저는 Spring 4.0.7과 함께 일하고 있습니다.

저는 JavaConfig를 통해 Spring MVC 구성에 대해 조사했습니다.

실제로 어제까지 이 두 가지 옵션을 사용하는 두 가지 구성을 보았습니다.

  1. 확장된 AbstractAnnotationConfigDispatcherServletInitializer
  2. 확장된 WebMvcConfigurerAdapter 그리고. 기구들 WebApplicationInitializer

참고: (2)는 두 개의 클래스로, 하나는 확장용이고 다른 하나는 구현용입니다.

변환기, 포맷터, 리소스 핸들러 등을 구성할 수 있는 많은 예를 발견했기 때문에 (2)를 사용하고 있습니다.

하지만 최근에 스택 오버플로에 대한 질문을 도와주려고 했는데 (1)이 존재한다는 것을 깨달았습니다.구글에서 (1)에 대해 몇 가지 개요를 했고 (1)과 관련된 몇 가지 예시가 존재합니다.

제 질문은 이 게시물의 제목이 어떻게 묘사되느냐 입니다.

감사해요.

서블릿 3.0 사양이 출시되면서 xml을 사용하지 않고 서블릿 컨테이너를 구성할 수 있게 되었습니다.이를 위해 Servlet 사양에 가 있습니다.이 클래스에서 당신은 필터, 청취자, 서블릿 등을 등록할 수 있습니다. 당신이 전통적으로 하는 것처럼.web.xml.

스프링은 수업을 다루는 방법을 아는 구현을 제공합니다.봄은 또한 당신의 삶을 더 쉽게 하기 위해 확장할 수 있는 몇가지 기본 수업들을 제공합니다.AbstractAnnotationConfigDispatcherServletInitializer그것들 중 하나입니다.그것은 A를 등록합니다.ContextLoaderlistener및 ()및 aDispatcherServlet 클래스를 하여 두 할 수 있으며 두스두성를게고를할다수할es다수d할osuy를yo두dogons고s DispatcherServlet서블릿 매핑을 제공합니다.

WebMvcConfigurerAdapter는 Spring MVC기한로해된 xml을는에를ey다는sdreleeefgmgglc,해에는g는기m한,로c를DispatcherServletThe Spring MVC기해를해기emg를c해.. 그.WebMvcConfigurerAdapter야다에 사용해야 .@Configuration수업.

@Configuration
@EnableWebMvc
public class WebConfiguration 
    extends WebMvcConfigurerAdapter implements WebApplicationInitializer
{ ... }

기본적으로 두 가지 다른 관심사이기 때문에 혼합하는 것은 추천하지 않습니다.첫 번째는 서블릿 컨테이너를 구성하기 위한 것이고, 두 번째는 Spring MVC를 구성하기 위한 것입니다.

당신은 그것들을 두 개의 반으로 나누길 원할 것입니다.

구성의 경우.

@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[] {"/"};
    }

}

ΔΔ Δ Δ Spring Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ DispatcherServlet및는ContextLoaderListener.

처음부터 서블릿 컨테이너가 어떻게 시작되는지 살펴볼 필요가 있습니다.

  • 스프링 서블릿 컨테이너Initializer는 모든 Servlet 3.0 컨테이너에 의해 자동으로 부트스트랩됩니다.
  • 스프링 서블릿 컨테이너Initializer는 WebApplication을 구현하는 클래스를 찾습니다.이니셜라이저(스프링 링크).io; 또한 Craig Walls의 "Spring In Action" 제4판에 잘 묘사되어 있습니다, p.135).

시작 방법 - 스프링 서블릿 컨테이너Initializer는 WebApplication을 구현하는 적절한 클래스를 찾아야 합니다.이니셜라이저.이를 실현하는 두 가지 방법이 있습니다.

  1. 하나는 웹 애플리케이션을 구현하는 것입니다.Initializer 자체적으로 도입되었으며, 인터페이스는 Spring 3.1에 도입되었습니다.
  2. 두 번째는 AbstractAnnotationConfigDispatcherServlet을 확장하는 것입니다.WebApplication도 구현하는 Initializer 클래스이니셜라이저.이 클래스는 편의를 위해 Spring 3.2에 도입되었으며 "Java 기반 Spring 구성을 사용하는 응용 프로그램에서 선호하는 접근 방식"입니다. - 링크 참조.이를 통해 루트 응용프로그램 컨텍스트뿐만 아니라 서블릿 응용프로그램 컨텍스트를 시작할 수 있습니다.

또한 언급하신 WebMvcConfigurerAdapter가 WebApplication과 혼동되어서는 안 된다는 점을 강조하고 싶습니다.이니셜라이저.이름에서 알 수 있듯이 "Mvc"를 설정하는 것과 관련이 있습니다.WebMvcConfigurer의 빈 메서드를 구현하는 어댑터 클래스입니다.@EnableWebMvc 주석으로 Mvc 컨트롤러를 구성할 때 사용합니다.

도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/26676782/when-use-abstractannotationconfigdispatcherservletinitializer-and-webapplication

반응형