различное поведение для обработки ошибок в весенней загрузке jar и intellij idea - PullRequest
0 голосов
/ 16 октября 2019

Я разработал приложение с весенней загрузкой.

Приложение содержит обработчик Global Exception, который отлично работает, когда я запускаю (или отлаживаю) приложение из Intellij IDEA.

Но когда я выполняю последний jar (созданный maven clean install), этот обработчик ошибок делаетне работает (и все запрограммированные исключения, которые предоставляют требуемую информацию клиенту) были заменены ошибкой whitepage 500 или ответом об ошибке 500 в API.

это примерный результат, который я хочу передать клиенту (и он будетбудет отправлено клиенту при запуске приложения с IDE)

{
    "apierror": {
        "status": "BAD_REQUEST",
        "timestamp": {
            "month": "OCTOBER",
            "year": 2019,
            "dayOfMonth": 16,
            "dayOfWeek": "WEDNESDAY",
            "dayOfYear": 289,
            "monthValue": 10,
            "hour": 15,
            "minute": 18,
            "nano": 904000000,
            "second": 44,
            "chronology": {
                "id": "ISO",
                "calendarType": "iso8601"
            }
        },
        "code": "error.user.not-found-Username",
        "message": "error.user.not-found-Username",
        "localizedMessage": "error.user.not-found-Username",
        "subErrors": null,
        "Username": "notfoundusername"
    }
}

это сообщение, возвращаемое из java -jar app:

{
    "timestamp": "2019-10-16T15:17:20.337+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No message available",
    "path": "/login"
}

это обработчик ошибок:

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@RequiredArgsConstructor
public class BaseBusinessExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(BaseBusinessException.class)
    public ResponseEntity<Object> handleBaseBusinessException(
        final BaseBusinessException ex,
        final HttpServletRequest request
    ) {
        ApiError apiError = new ApiError(ex.getHttpStatus());
        String acceptLanguage = request.getHeader("Accept-Language");
        if (Empty.isNotEmpty(acceptLanguage)) {
            Locale locale = new Locale(acceptLanguage);
            apiError.setLocalizedMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), locale));
        }
        apiError.setCode(ex.getErrorCode());
        apiError.setMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), Locale.getDefault()));
        if (Empty.isNotEmpty(ex.getMessageArgs())) {
            Map<String, Object> meta = new HashMap<>(ex.getMessageArgs());
            apiError.setMeta(meta);
        }
        return buildResponseEntity(apiError);
    }

и вот где выдается исключение:

        User user = userRepository.findOneByUsername(arg.getUsername());
        if (user == null) {
            throw new UserNotFoundException(arg.getUsername());
        }

Может кто-нибудь помочь мне решить эту проблему?

...