Как добавить RequestContextListener с конфигурацией без xml?
Мне нужно добавить слушателя в мое приложение Spring Boot, в web.xml это выглядит так
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
Я использую конфигурацию no-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 Boot?
2 ответа
Решение
Я создал этот класс, и это решило мою проблему.
@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
Напишите свой собственный класс слушателя, который простирается от RequestContextListener
и зарегистрируйте его с помощью аннотации. Что-то вроде этого:
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}