2017-10-17 3 views
1

나는 내 Spring Boot Web Flux 애플리케이션을 꽤 오랫동안 사용 해왔다. 이 시점에서 나는 내 라우터 기능에 약간의 예외 처리기를 추가하고 싶었 : 내보기 확인자에 문제가 오전이 후Spring에서 ViewResolver를 설정하는 방법 WebFlux

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

:

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

그래서 나는이 같은 다른 빈을 추가했다. 내 의견을 찾을 수 없습니다. 조사한 후에 디버거가 ThymeleafReactiveViewResolver 클래스에서 멈추지 않는다는 것을 깨달았습니다.

이 변경으로 기본보기 리졸버도 변경 될 수 있습니까? 어떻게 다시 가져올 수 있습니까?

+0

새로운 'httpHandler' 빈을 주석 처리하면 모든 것이 정상으로 돌아갈 수 있습니까? – dillius

+0

@ 딜리우스 예. –

+0

[spring docs] (https://docs.spring.io/spring/docs/5.0.0.M4/spring-framework-reference/html/web-reactive.html#web-reactive-getting- started-manual) 핸들러에 컨텍스트 정보를 제공해야하는 것처럼 보입니까? – dillius

답변

1

httpHandler을 제공하면 스프링 부트에서 많은 지원을 사용할 수 없게됩니다.

구성 요소 (주문한 것일 수도 있음)로 자신의 WebExceptionHandler을 선언 할 수 있으며 Spring WebFlux가 자동으로 선택합니다. 보다 구체적인 예가 없으면 (또는 적어도 스택 추적/오류가 표시되는 경우) 진행 상황을 이해하기 어렵습니다.

스프링 부트는 이제 실현하려는 경우에 대비하여 WebFlux 응용 프로그램에서 오류 처리를 지원합니다 (#8625 참조).

관련 문제