• Home
  • About
    • Junseok photo

      Junseok

      개발자 블로그

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Java
    • java-basic
    • java-solid
    • java-pattern
    • java-logging
  • Javascript
  • Angular
  • spring
    • spring-framework
    • spring-boot
    • spring-test
  • server
    • jeus
    • webtob
    • tomcat
  • test
    • junit
    • assertj
    • hamcrest
    • dbunit
    • spring
  • docker
  • unix
  • maven
  • db
  • network
  • eclipse
  • intellij
  • microservices
  • etc

ContextLoaderListener

08 Jan 2018

Reading time ~3 minutes

ContextLoaderListener

org.springframework.web.context.ContextLoaderListener jar - spring-web-5.0.2.RELEASE.jar (최신버전)

루트 애플리케이션 컨텍스트의 라이프 사이클 관리 부트 스트랩 리스너는 Spring의 root{@link WebApplicationContext}를 시작하고 종료합니다. 단순히 {@link ContextLoader} 에 위임 할뿐 아니라 {@link ContextCleanupListener}에 위임하기만 하면됩니다. Spring 3.1 이후, ContextLoaderListener는 Servlet 3.0+ 환경에서 프로그래밍 방식으로 구성 할 수 있도록 {@link #ContextLoaderListener (WebApplicationContext)} 생성자를 통해 루트 웹 응용 프로그램 컨텍스트를 주입하는 것을 지원합니다.

「contextClass」및 「contextConfigLocation」서블릿 context-params에 근거 해 Web 어플리케이션 문맥을 작성하는 새로운 ContextLoaderListener를 작성합니다. 각각의 기본값에 대한 자세한 내용은 {@link ContextLoader} 수퍼 클래스 설명서를 참조하십시오.

이 생성자는 일반적으로 인수가없는 생성자가 필요한 {@code web.xml} 내의 {@code }로 ContextLoaderListener를 선언 할 때 사용됩니다. 생성 된 애플리케이션 컨텍스트는 속성 이름 {@link WebApplicationContext # ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE} 아래에 ServletContext에 등록되며 Spring 애플리케이션 컨텍스트는 이 listener에서 {@link #contextDestroyed} 라이프 사이클 메소드가 호출 될 때 닫힙니다.

 public ContextLoaderListener() {
}

WebApplicationContext

웹 응용 프로그램의 구성을 제공하는 인터페이스. 이것은 어플리케이션의 실행 중에는 읽기 전용입니다만, implemenetation이 이것을 지원하고있는 경우는 리로드 될 가능성이 있습니다. 이 인터페이스는 범용의 ApplicationContext 인터페이스에 getServletContext () 메소드를 추가해, 부트 스트랩 처리로 루트 문맥을 바인드 할 필요가있는, 잘 알려진 어플리케이션 속성 명을 정의합니다.

일반 응용 프로그램 컨텍스트와 마찬가지로 웹 응용 프로그램 컨텍스트는 계층 적입니다. 애플리케이션 당 하나의 루트 컨텍스트가 있고, 애플리케이션의 각 서블릿 (MVC 프레임 워크의 디스패처 서블릿 포함)에는 자체 하위 컨텍스트가 있습니다. 표준 애플 리케이션 컨텍스트 라이프 사이클 기능 외에도 WebApplicationContext 구현은 ServletContextAware} Bean을 감지하고 이에 따라 {@code setServletContext} 메소드를 호출해야합니다.

ContextLoader

루트 응용 프로그램 컨텍스트에 대한 실제 초기화 작업을 수행합니다. ContextLoaderListener에 의해 불려갑니다.

문맥 클래스 형을 지정하기 위해서, {@code web.xml} context-param 레벨의 {@link #CONTEXT_CLASS_PARAM “contextClass”}파라미터를 검색해, {@link org.springframework.web.context.support.XmlWebApplicationContext} 찾을 수없는 경우. 디폴트의 ​​ContextLoader 구현에서는, 지정된 컨텍스트 클래스가 {@link ConfigurableWebApplicationContext} 인터페이스를 구현할 필요가 있습니다.

#CONFIG_LOCATION_PARAM “contextConfigLocation”context-param를 처리해, 그 값을 문맥 인스턴스에 건네 주어,
복수의 파일 패스에 구문 분석 해, 임의의 수의 쉼표 및 공백으로 나눌 수 있습니다. “WEB-INF / applicationContext1.xml, WEB-INF / applicationContext2.xml”.

Ant-style 경로 패턴도 지원됩니다 “WEB-INF / * Context.xml, WEB-INF / spring * .xml” 또는 “WEB-INF / & # 42; & # 42; / * Context.xml”.

참고 : 여러 설정 위치의 경우, 이후의 bean 정의는 적어도 이전에로드 된 파일에 정의 된 것보다 우선합니다. Spring의 기본 ApplicationContext 구현.

이것은 추가 XML 파일을 통해 의도적으로 특정 bean 정의를 오버라이드 (override)하기 위해 활용 될 수 있습니다.

루트 어플리케이션 컨텍스트를 로드하는 것 이상으로 이 클래스는 선택적으로 공유 부모 컨텍스트를로드하거나 가져 와서 루트 응용 프로그램 컨텍스트에 연결합니다. 자세한 것은, {@link #loadParentContext(ServletContext)} 메소드를 참조하십시오.

Spring 3.1 이후로 ContextLoader는 Servlet 3.0+ 환경에서 프로그래밍 방식으로 구성 할 수 있도록 {@link #ContextLoader (WebApplicationContext)} 생성자를 통해 루트 웹 응용 프로그램 컨텍스트를 주입하는 것을 지원합니다.

사용 예는 {@link org.springframework.web.WebApplicationInitializer}를 참조하십시오.

기본 BeanFactory의 직렬화 ID로 사용되는 루트 WebApplicationContext ID의 구성 매개 변수 : {@value}

public static final String CONTEXT_ID_PARAM = "contextId";

루트 컨텍스트의 구성 위치를 지정할 수있는 서블릿 컨텍스트 매개 변수의 이름 (예 : {@value}). 그렇지 않은 경우 구현의 기본값으로 되돌아갑니다. @see org.springframework.web.context.support.XmlWebApplicationContext#DEFAULT_CONFIG_LOCATION

public static final String CONFIG_LOCATION_PARAM = "contextConfigLocation";

사용할 루트 WebApplicationContext 구현 클래스의 구성 매개 변수 : {@value} @see #determineContextClass(ServletContext)

public static final String CONTEXT_CLASS_PARAM = "contextClass";

루트 웹 어플리케이션 컨텍스트를 초기화하는데 사용하는 {@link ApplicationContextInitializer} 클래스의 구성 매개 변수 : {@value} @see #customizeContext(ServletContext, ConfigurableWebApplicationContext)

public static final String CONTEXT_INITIALIZER_CLASSES_PARAM = "contextInitializerClasses";

. . . 참고 : https://github.com/spring-projects/spring-framework/blob/master/spring-web/src/main/java/org/springframework/web/context/ContextLoader.java



springframework Share Tweet +1