如何在Spring WebFlux

时间:2017-10-17 21:25:09

标签: java spring-boot spring-webflux

我的Spring Boot Web Flux应用已经有一段时间了。此时我想在路由器功能中添加一些异常处理程序:

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

所以我添加了另一个这样的bean:

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

在此之后,我的视图解析器遇到了麻烦。它无法找到我的任何观点。在调查之后,我意识到调试器不会在ThymeleafReactiveViewResolver类中停止。

这种变化是否可能改变了默认视图解析器?我该如何把它带回来?

1 个答案:

答案 0 :(得分:1)

提供httpHandler禁用Spring Boot的大量支持。

您可以将自己的WebExceptionHandler声明为组件(即使是有序组件),Spring WebFlux也会为您挑选。如果没有更具体的例子(或者至少是你所看到的堆栈跟踪/错误),很难理解发生了什么。

Spring Boot现在支持WebFlux应用程序中的错误处理(请参阅#8625),以防它执行您尝试实现的目标。