Я создал приложение Spring Restful Service и Spring MVC.
Restful Service ::
Служба Restful возвращает сущность, если она существует в БД. Если он не существует, он возвращает пользовательскую информацию об исключении в объекте ResponseEntity.
Работает, как и ожидалось, протестировано с почтальоном.
@GetMapping(value = "/validate/{itemId}", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public ResponseEntity<MyItem> validateItem(@PathVariable Long itemId, @RequestHeader HttpHeaders httpHeaders) {
MyItem myItem = myitemService.validateMyItem(itemId);
ResponseEntity<MyItem> responseEntity = null;
if (myItem == null) {
throw new ItemNotFoundException("Item Not Found!!!!");
}
responseEntity = new ResponseEntity<MyItem>(myItem, headers, HttpStatus.OK);
return responseEntity;
}
Если запрошенная сущность не существует, Restful Service возвращается ниже.
@ExceptionHandler(ItemNotFoundException.class)
public ResponseEntity<ExceptionResponse> itemNotFEx(WebRequest webRequest, Exception exception) {
System.out.println("In CREEH::ItemNFE");
ExceptionResponse exceptionResponse = new ExceptionResponse("Item Not Found Ex!!!", new Date(), webRequest.getDescription(false));
ResponseEntity<ExceptionResponse> responseEntity = new ResponseEntity<ExceptionResponse>(exceptionResponse, HttpStatus.NOT_FOUND);
return responseEntity;
}
Но когда я вызываю вышеуказанную службу из весеннего приложения MVC, используя RestTemplate, он возвращает действительный объект, если он существует.
Если запрошенный объект не существует, служба Restful возвращает информацию об исключении, но не достигает вызывающего приложения (spring MVC).
Приложение Spring MVC вызывает Restful Web Service с использованием шаблона Rest
String url = "http://localhost:8080/ItemServices/items/validate/{itemId}";
ResponseEntity<Object> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Object.class, uriParms);
int restCallStateCode = responseEntity.getStatusCodeValue();