2014-12-25 2 views
0

나는 spring-mvc 애플리케이션을 개발 중이다.스프링 빈은 필터에 접근 할 수 없다.

내 필터에서 콩에 액세스 할 수 없습니다. 나는이 문제를 찾을 수 없습니다 예외

org.springframework.beans.factory.NoSuchBeanDefinitionException : No qualifying bean of type [com.abc.app.SessionValue] is defined 

내가 https://stackoverflow.com/a/11709272/3898076을 던져 갔다 이하지고 있지만입니다.

나는 구성 요소 검사 항목이 포함 내 web.xml을

<servlet> 
    <servlet-name>myapp</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring_xyz-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

그리고 spring_xyz-servlet.xml 파일에 항목 아래에 있습니다.

<context:component-scan base-package="com.abc.app" /> 
<context:annotation-config /> 
<context:spring-configured /> 

필터 코드 :

WebApplicationContext springContext = WebApplicationContextUtils.getWebApplicationContext(fConfig.getServletContext()); 
springContext.getBean(SessionValue.class); 

는 구성 문제는이에 있습니까?

감사합니다.

+0

그리고'스프링 빈으로 등록 SessionValue'입니까? –

+0

주석을 사용하여 Component로 등록되었습니다. –

+1

'WebApplicationContextUtils'는'ContextLoaderListener'에 의해로드 된 루트 컨텍스트를 검색합니다. 루트 컨텍스트는'DispatcherServlet'에 의해로드 된 컨텍스트에 액세스하지 않습니다. bean을 루트 컨텍스트로 이동하십시오. –

답변

1

다른 제약 조건이 없다면 Spring 컨텍스트에 있고 핸들러가 필터와 거의 유사하기 때문에 Spring MVC 처리기 인터셉터를 사용해야합니다.

http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html

예 :

http://www.journaldev.com/2676/spring-mvc-interceptors-example-handlerinterceptor-and-handlerinterceptoradapter

+0

예, 사용할 수 있습니다. 하지만 나는 또한 필터를 사용하여 실행 싶습니다. –

+0

나는 당신의 오류를 더 잘 확인했으며 이미 Spring 문맥을 가지고있는 것처럼 보입니다. SessionValue에 Component로 주석을 추가합니까? 또는이 인터페이스가 구현 클래스에 구성 요소 또는 서비스로 주석을 추가 했습니까? – mommcilo

+0

예, @ M.Deinum이 문제를 지적했습니다. 내 응용 프로그램에서이를 수행하는 방법을 찾는 솔루션. –

관련 문제