2016-07-05 10 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. 

このメッセージを受け取ると、それは助けにはなりません。 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

@Configurationも必要です、ありがとう –

+0

補足ありがとう。役に立つと嬉しいです。 – olexd

関連する問題