У меня есть контроллер отдыха с GetMapping, который производит тип мультимедиа «Plain_text». Когда в базовой службе возникает исключение, оно обрабатывается советом контроллера, а совет контроллера возвращает объект, который будет сериализован в JSON.
На счастливом пути, когда служба не генерирует никаких исключений, я получаю правильный ответ. Но в случае сценариев ошибок я получаю исключение с ошибкой «Не удалось найти приемлемое представление». Если я удалил тег «производит», контроллер работает нормально.
Есть ли способ при весенней загрузке, чтобы api возвращал простой текстовый тип носителя и в случае ошибок возвращал ответ Json?
Вот мой код:
@RestController
@RequestMapping("/sample")
public class SampleController() {
@Autowired
SampleService service;
@GetMapping(produces = MediaType.TEXT_PLAIN)
public String getString(){
return service.getString();
}
}
КонтроллерСовет:
@RestControllerAdvice
public class SampleControllerAdvice(){
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler({SampleNotFoundException.class})
public SampleErrorResponse handleException(Exception ex) {
return new SampleErrorResponse(e.getMessage());
}
}




Это похоже на SPR-16318, который был исправлен в Spring Framework 5.1 - это версия, используемая в Spring Boot 2.1.
Вам следует перейти на Spring Boot 2.1+, чтобы исправить это в своем приложении.
Прежде всего, можете ли вы указать параметры своего метода в своем controllerAdive ((HttpServletRequest req, SampleNotFoundException ex)), а не Exception ex, во-вторых, думаете, что вам действительно нужен text_plain? Третий момент, как вы проверяете метод отдыха?