web-dev-qa-db-ja.com

no-xml構成でRequestContextListenerを追加する方法は?

SpringBootアプリケーションにリスナーを追加する必要があります。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アプリケーションにリスナーを適切に追加するにはどうすればよいですか?

9
Bogdan Timofeev

私はこのクラスを作成しました、そしてそれは私の問題を解決しました。

@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
9
Bogdan Timofeev

RequestContextListenerから拡張する独自のリスナークラスを作成し、アノテーションを介して登録します。このようなもの:

@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
2
olexd