복붙노트

[SPRING] DispatcherServlet에 따라 ContextLoaderListener 사용

SPRING

DispatcherServlet에 따라 ContextLoaderListener 사용

DispatchServlet (Spring MVC)뿐만 아니라 ContextLoaderListener (내 서블릿에 Spring Bean을 전달할 수 있도록)를 사용하고자한다. 그러나, 현재 초기화 param이 두 클래스 이니셜 라이저에 전달해야합니다 :

<param-name>contextConfigLocation</param-name>
<param-value>
    /WEB-INF/spring/app-config.xml
</param-value>

따라서 두 클래스 모두 동일한 XML을 사용합니다. 원두가 두 번 초기화 될 경우 원두가 궁금합니다. 그렇다면 어떻게 피할 수 있습니까?

해결법

  1. ==============================

    1.ContextLoaderListener 및 DispatcherServlet의 경우 contextConfigLocation 매개 변수는 선택 사항입니다.

    ContextLoaderListener 및 DispatcherServlet의 경우 contextConfigLocation 매개 변수는 선택 사항입니다.

    ContextLoaderListener의 기본값은 /WEB-INF/application.xml이고, DispatcherServlet의 기본값은 /WEB-INF/servletname-servlet.xml입니다.

    이러한 매개 변수를 명시 적으로 설정하면 동일한 값으로 설정하면 안됩니다. ContextLoaderListener와 DispatcherServlet은 bean 정의의 다른 집합을 가진 문맥을 가져야한다. 그렇지 않으면 bean이 두 번 인스턴스화 될 것이기 때문이다.

  2. ==============================

    2.DispatcherServlet 초기화가 ContextLoaderListener의 컨텍스트를 사용하도록하려면 contextConfigLocation을 비어 있어야합니다.

    DispatcherServlet 초기화가 ContextLoaderListener의 컨텍스트를 사용하도록하려면 contextConfigLocation을 비어 있어야합니다.

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:spring-context.xml
        </param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  3. from https://stackoverflow.com/questions/2583127/use-a-contextloaderlistener-in-accordance-with-dispatchservlet by cc-by-sa and MIT license