【问题标题】:How to add a RequestContextListener with no-xml configuration?如何使用无 xml 配置添加 RequestContextListener?
【发布时间】:2016-11-07 05:49:35
【问题描述】:

我需要在我的 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) 方法中添加了一个监听器,但它没有帮助,因为我仍然得到 ​​p>

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

这条消息。如何正确地将侦听器添加到我的 Spring Boot 应用程序?

【问题讨论】:

  • 你为什么需要这个? RequestContextListener(或过滤器)的功能已经是DispatcherServlet 的一部分。但是,您的配置也是错误的,因为您没有加载任何配置类(您的 rootConfigClassesservletConfigClasses 返回 null 导致没有加载任何内容)。
  • 谢谢@M.Deinum,我正在解决这个问题:stackoverflow.com/questions/35875098/…

标签: java spring spring-boot oauth2


【解决方案1】:

我创建了这个类,这解决了我的问题。

@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}

【讨论】:

    【解决方案2】:

    编写您自己的从RequestContextListener 扩展的监听器类并通过注解注册它。像这样的:

    @WebListener
    public class MyRequestContextListener extends RequestContextListener {
    }
    

    【讨论】:

    • 感谢补充。很高兴能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2010-12-16
    • 2017-04-19
    相关资源
    最近更新 更多