Ручная настройка глобального обработчика исключений в весеннем webflux через компонент httpHandler - PullRequest
0 голосов
/ 19 апреля 2020

Я занимаюсь разработкой набора повторно используемых вещей, таких как фильтры, глобальные обработчики исключений и другие компоненты Spring WebFlux, которые будут использоваться приложениями реактивной пружины (WebFlux)

Так как это библиотека (баночка) , которые будут использоваться приложениями, я не хочу аннотировать класс глобального обработчика исключений с помощью @Configuration и вместо этого хотел бы позволить приложениям программно настраивать обработчик исключений по мере необходимости. Я вижу из документов, что способ настроить WebExceptionHandler через HttpHandler.

@Component
@AllArgsConstructor
public class TestApplicationConfig {

    private ApplicationContext applicationContext;

    @Bean
    public HttpHandler routeHandler() {
        return WebHttpHandlerBuilder.applicationContext(applicationContext)
                .exceptionHandler(new ServiceExceptionHandler())
                .build();
    }
}

//exception handler
@NoArgsConstructor
@Order(-2)
@Slf4j
public class ServiceExceptionHandler implements ErrorWebExceptionHandler {

    @SuppressWarnings("NullableProblems")
    @Override
    public Mono<Void> handle(ServerWebExchange serverWebExchange, Throwable err) {
    }
}

Компонент routeHandler вызывается платформой, но обработчик исключения не вызывается ни для какого исключения. Если у меня есть @Configuration в классе обработчика исключений, то он вызывается. Интересно, если я ошибаюсь, выставляя HttpHandler как бин

...