В Spring Webflux Каков предпочтительный способ обработки исключений?
@ RestControllerAdvice происходит из Spring MVC, тогда как DefaultErrorAttributes происходит из Spring Webflux.
Однако в SpringКто-нибудь может использовать @RestControllerAdvice.Каковы будут преимущества / недостатки?
@ RestControllerAdvice
@RestControllerAdvice
public class ControllerAdvice
{
@ExceptionHandler(Throwable.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Mono<Map<String, Object>> exceptions(Throwable e)
{
return Mono.just(Map.of("message", "bad"));
}
}
Расширение DefaultErrorAttributes
@Component
public class ErrorAttributes extends DefaultErrorAttributes
{
@Override
public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace)
{
var ex = getError(request);
var attributes = new LinkedHashMap<String, Object>();
attributes.put("status", HttpStatus.BAD_REQUEST.value());
attributes.put("message", "bad");
return attributes;
}
}
Я хочучтобы оставаться в реактивном мире, поэтому я больше склоняюсь к DefaultErrorAttributes (который хорошо работает с DefaultErrorWebExceptionHandler в Webflux).Однако в @RestControllerAdvice я также мог использовать Mono.just (...).