[SPRING] 스프링 3의 DispatcherServlet 대신 ContextLoaderListener를 통한 DefaultAnnotationHandlerMapping
SPRING스프링 3의 DispatcherServlet 대신 ContextLoaderListener를 통한 DefaultAnnotationHandlerMapping
DispatcherServlet을 사용할 때 java.lang.IllegalStateException가 발생합니다 : No WebApplicationContext found : No ContextLoaderListener가 등록 되었습니까? DelegatingFilterProxy 필터를 사용하면 오류가 발생합니다. 따라서 DispatcherServlet을 제거하고 대신 ContextLoaderListener를 사용하고 Spring 애플리케이션이 잘로드됩니다. 그러나, 나는 하나의 아주 중요한 빈에 문제가있다 :
<context:component-scan base-package="com.mydomain"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptor" />
</list>
</property>
</bean>
이 빈은 더 이상 작동하지 않으며, @ 컨트롤러의 URL은 더 이상 매핑되지 않습니다. DispatcherServlet을 사용하여 다시 전환하면 아무런 문제가 없습니다 (내 필터가 다시 쓸모 없다는 것만 제외하고). 이 Bean을 ContextLoaderListener 내에서 올바르게로드하려면 어떻게해야합니까?
건배
나
해결법
-
==============================
1.ContextLoaderListener와 DispatcherServlet이 모두 필요합니다. 오류 메시지가 서블릿을 제거하라는 메시지를 표시하지 않았습니다.
ContextLoaderListener와 DispatcherServlet이 모두 필요합니다. 오류 메시지가 서블릿을 제거하라는 메시지를 표시하지 않았습니다.
Spring이 여기에서 무엇을하는지 명확하게하기 위해 DispatcherServlet은 (보통 xxx-servlet.xml을 사용하여) 자체 ApplicationContext를 생성하지만 web.xml에서 구성한 모든 스프링 필터는 서블릿의 ApplicationContext에 액세스 할 수 없습니다.
ContextLoaderListener는 두 번째 ApplicationContext (전체 webapp와 연결됨)를 생성하고 서블릿의 ApplicationContext와 연결하여 필터와 서블릿이 Spring을 통해 통신 할 수 있도록합니다.
-
==============================
2.Spring MVC 기본 app의 web.xml에는 ContextLoaderListener가 없다. https://src.springframework.org/svn/spring-samples/mvc-basic/trunk/src/main/webapp/WEB-INF/web.xml을 참조하십시오.
Spring MVC 기본 app의 web.xml에는 ContextLoaderListener가 없다. https://src.springframework.org/svn/spring-samples/mvc-basic/trunk/src/main/webapp/WEB-INF/web.xml을 참조하십시오.
내 응용 프로그램에서 다음 오류가 발생하기 때문에 내가 묻는 이유 :
ERROR [[Spring MVC Dispatcher Servlet]] 서블릿 용 Servlet.service () Spring MVC Dispatcher Servlet이 예외를 던졌습니다. java.lang.IllegalStateException : No WebApplicationContext found : no ContextLoaderListener가 등록 되었습니까?
ContextLoaderListener (문제가 발생할 가능성이 높음)가 없습니다.
MVC 기본 응용 프로그램이 작동하는 이유는 무엇입니까?
from https://stackoverflow.com/questions/1464881/defaultannotationhandlermapping-via-contextloaderlistener-instead-of-dispatchers by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] IllegalArgumentException : 형태를 null로 할 수 없다 (0) | 2019.02.06 |
---|---|
[SPRING] 스프링 빈에서 세션 범위 사용하기 (0) | 2019.02.05 |
[SPRING] 유형별 스프링 목록 빈 (0) | 2019.02.05 |
[SPRING] 나머지 템플릿 사용자 정의 예외 처리 (0) | 2019.02.05 |
[SPRING] 메모리에 바이트 배열을 사용하여 Java 파일 객체 (또는 동등 물)를 만듭니다 (실제 파일은 제외). (0) | 2019.02.05 |