2016-07-05 3 views
5

мне нужно добавить слушатель к моему Spring приложению загрузки, в web.xml он выглядитКак добавить RequestContextListener без конфигурации xml?

<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. 

это сообщение. Как правильно добавить слушателя в мое приложение загрузки Spring?

+0

И зачем вам это нужно? Функциональность 'RequestContextListener' (или фильтра) уже является частью' DispatcherServlet'. Однако ваша конфигурация также неверна, так как вы не загружаете какой-либо конфигурационный класс (оба 'rootConfigClasses' и' servletConfigClasses' возвращают 'null', что ни к чему не загружается). –

+0

Спасибо @ 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

@ Конфигурация также необходима, спасибо –

+0

Спасибо за дополнение. Рад быть полезным. – olexd