Я занимаюсь разработкой набора повторно используемых вещей, таких как фильтры, глобальные обработчики исключений и другие компоненты 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 как бин