2017-10-17 7 views
1

Ich habe meine Spring Boot Web Flux-Anwendung schon seit einiger Zeit. An dieser Stelle wollte ich einige Exception-Handler zu meinem Router-Funktion hinzuzufügen:So stellen Sie ViewResolver im Frühjahr ein WebFlux

@Bean 
RouterFunction<?> router(final GeneratorHandler generatorHandler) { 
    return resources("/**", new ClassPathResource("/static/")) 
      .andOther(route(GET("/generate"), generatorHandler::renderData) 
        .andRoute(GET("/index"), generatorHandler::renderIndex)); 
} 

So habe ich eine andere Bohne wie folgt aus:

@Bean 
HttpHandler httpHandler(final GeneratorHandler generatorHandler) throws Exception { 
    return WebHttpHandlerBuilder.webHandler(toHttpHandler(router(generatorHandler))) 
      .prependExceptionHandler((serverWebExchange, exception) -> { 
       //process here 
       return null; 
      }) 
      .build(); 
} 

Danach ich Probleme mit meiner Sicht Resolver habe. Es kann keine meiner Ansichten finden. Nach der Untersuchung habe ich festgestellt, dass der Debugger nicht in der ThymeleafReactiveViewResolver-Klasse stoppt.

Ist es möglich, dass diese Änderung auch den Standard-View-Resolver änderte? Wie kann ich es zurückbringen?

+0

Wenn Sie die neue Bean "httpHandler" auskommentieren, wird alles wieder normal? – dillius

+0

@dillius ja es tut. –

+0

Dieser Abschnitt der [Spring-Dokumentation] (https://docs.spring.io/spring/docs/5.0.0.M4/spring-framework-reference/html/web-reactive.html#web-reactive-getting- started-manual) scheint es so, als müssten Sie dem Handler Kontextinformationen geben. – dillius

Antwort

1

Die Bereitstellung Ihrer httpHandler deaktiviert ziemlich viel Unterstützung von Spring Boot.

Sie können Ihre eigene WebExceptionHandler als eine Komponente (auch eine bestellte) deklarieren und Spring WebFlux wird es für Sie abholen. Ohne ein konkreteres Beispiel (oder zumindest den StackTrace/Fehler, den Sie sehen), ist es schwer zu verstehen, was vor sich geht.

Spring Boot unterstützt jetzt Fehlerbehandlung in WebFlux-Anwendungen (siehe #8625), falls es das tut, was Sie erreichen möchten.

Verwandte Themen