@ControllerAdvice не отображается на ошибку - PullRequest
1 голос
/ 24 сентября 2019

У меня есть служба REST, где мне нужно отправить соответствующие коды состояния с пользовательским ответом json, который объясняет причину ошибки.

У меня есть класс @Controller, который предоставляет сервис / тест, и при запуске сервиса выдает пользовательское исключение (расширяет класс Exception)

У меня есть класс @ControllerAdvice, который обрабатывает исключение,Однако всякий раз, когда я получаю ошибку, я не получаю ответ json, вместо этого выводится трассировка стека.

Проверил блоги и попробовал решения.Однако не мог получить это решено.

@ControllerAdvice(basePackages = "com.test")
public class ResponseExceptionHandler extends ResponseEntityExceptionHandler{


    @ExceptionHandler(value= {MyException.class})
    @ResponseStatus(code=HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
    ResponseEntity<MyResponse> commonServiceException(MyException ex) {
        MyResponse errors = new MyResponse();

        errors.setTimeStamp(LocalDateTime.now());
        errors.setErrorCode(ex.getErrorCode());
        errors.setErrorMessage(ex.getMessage());
        errors.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase());
        errors.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
        return new ResponseEntity<>(errors, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

СЕРВИС

@Controller
....
public class test{
..
        @GET
    @Path("/test")
    //@ExceptionHandler(value= {MyException.class})
    @Produces(MediaType.APPLICATION_JSON)
    public  String test() throws MyException{
          throw new MyException("123", "message");

    }

context.xml

<context:component-scan base-package=" com.test">
        <context:include-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>

Ожидаемый: Ответ JSON

Факт: Типовой отчет об исключении

Служба сообщений в настоящее время недоступна.Код ошибки: ошибка приложения.Ошибка

Описание Сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос.

Исключение

com.test.MyException: Служба в настоящее время недоступна.Код ошибки: Ошибка приложения ..............................

1 Ответ

0 голосов
/ 30 сентября 2019

Это потому, что я смешивал Джерси и Spring Framework.После выполнения необходимых конфигураций весеннего сервлета в web.xml и использования @RequestMapping проблема решается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...