2016-07-05 3 views
5

은 내가 더-web.xml의 구성을 사용하지 no-xml 구성으로 RequestContextListener를 추가하는 방법은 무엇입니까?

<listener> 
<listener-class> 
    org.springframework.web.context.request.RequestContextListener 
</listener-class> 
</listener> 

것 같습니다 web.xml 파일에서, 내 봄 부팅 응용 프로그램에 리스너를 추가해야합니다, 그래서 나는

public class AppFilterConfig extends AbstractAnnotationConfigDispatcherServletInitializer { 

@Override 
protected Filter[] getServletFilters() { 
    CharacterEncodingFilter filter = new CharacterEncodingFilter(); 
    filter.setEncoding("UTF8"); 
    filter.setForceEncoding(true); 
    Filter[] filters = new Filter[1]; 
    filters[0] = filter; 
    return filters; 
} 

private int maxUploadSizeInMb = 5 * 1024 * 1024; // 5 MB 

@Override 
protected Class<?>[] getRootConfigClasses() { 
    return null; 
} 

@Override 
protected Class<?>[] getServletConfigClasses() { 
    return null; 
} 

@Override 
protected String[] getServletMappings() { 
    return new String[]{"/"}; 
} 

@Override 
protected void registerDispatcherServlet(ServletContext servletContext) { 
    super.registerDispatcherServlet(servletContext); 
    servletContext.addListener(new HttpSessionEventPublisher()); 

} 

@Override 
public void onStartup(ServletContext servletContext) throws ServletException  { 

    super.onStartup(servletContext); 
    servletContext.addListener(new RequestContextListener()); 
} 

} 
같은 클래스를 가지고 위의 코드에서 볼 수 있듯이

, 나는 onStartup에 리스너 (ServletContext에의 servletContext) 메소드를 추가했습니다,하지만 난 여전히

In this case, use RequestContextListener or RequestContextFilter to expose the current request. 

이 메시지로 도움이되지 않습니다. 스프링 부트 애플리케이션에 리스너를 제대로 추가하려면 어떻게해야합니까?

+0

왜이 기능이 필요합니까? 'RequestContextListener' (또는 필터)의 기능은 이미'DispatcherServlet'의 일부입니다. 그러나 구성 클래스를로드하지 않으므로 구성이 잘못되었습니다 ('rootConfigClasses'와'servletConfigClasses' 모두로드되지 않는 것으로 끝나는'null '을 반환합니다). –

+0

Thanks @ M.Deinum,이 문제를 해결하고 있습니다 : http://stackoverflow.com/questions/35875098/protecting-rest-api-with-oauth2-error-creating-bean-with-name-scopedtarget-oau –

답변

6

이 클래스를 작성하여 문제를 해결했습니다.

@Configuration 
@WebListener 
public class MyRequestContextListener extends RequestContextListener { 
} 
1

RequestContextListener에 이르는 독자적인 수신기 클래스를 작성하고 주석을 통해 등록하십시오. 다음과 같이 입력하십시오 :

@WebListener 
public class MyRequestContextListener extends RequestContextListener { 
} 
+0

불행히도 나는 동일한 오류가 발생했습니다 –

+0

@Configuration도 필요합니다. 감사합니다. –

+0

보완 주셔서 감사합니다. 다행이되어 기쁘다. – olexd