在库类中覆盖 @Order(Ordered.HIGHEST_PRECEDENCE) - 这甚至可能吗?

Override @Order(Ordered.HIGHEST_PRECEDENCE) in library class - is this even possible?

提问人:Maciaz 提问时间:11/6/2023 更新时间:11/6/2023 访问量:13

问:

我们在项目中使用了标记为 的外部库。由于支持结束,我们不得不升级库,但它也更改了一些异常处理程序,使它们返回而不是像以前那样......@ControllerAdvice@Order(Ordered.HIGHEST_PRECEDENCE)409400

所以我正在尝试创建一个自定义异常处理程序和自定义异常。 问题是,库处理程序中有这样的类默认函数......Exception

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)  // 500
@ExceptionHandler(Exception.class)
@ResponseBody
public ErrorInfo defaultErrorHandler(Exception e) {

    LOGGER.error("Internal error: ", e);
    ErrorInfo errorInfo = new ErrorInfo(INTERNAL_SERVER_ERROR_MESSAGE);
    errorInfo.setMessageKey(INTERNAL_SERVER_ERROR_MESSAGE_KEY);

    return errorInfo;
}

结果是当我的自定义异常被抛出时,它首先由于较低而进入库处理程序,并在默认函数中处理并返回...@Order500

下面是我的自定义异常处理程序的代码:

@ControllerAdvice
public class ZweRestExceptionHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(ZweRestExceptionHandler.class);

    @ResponseStatus(HttpStatus.BAD_REQUEST)  // 400
    @ExceptionHandler(ZweBadRequestException.class)

        @ResponseBody
        public ErrorInfo handleZweBadRequestException(ZweBadRequestException e) {
            return createInfoFromException(e, BAD_REQUEST_MESSAGE_KEY);
        }
}

当谈到我的自定义处理程序时,我无法标记

它,因为它会导致溢出并且顺序仍然会更高......
@Order(Ordered.HIGHEST_PRECEDENCE) - 1

我有哪些选择?还有其他方法可以覆盖类吗?我将不胜感激任何线索。HIGHEST_PRECEDENCE

Java Kotlin 异常 共享库 exceptionhandler

评论


答: 暂无答案