Я создаю простые контроллеры REST, для которых в моем весеннем загрузочном приложении я добавил конфигурацию для RequestContextListener
@Configuration
@WebListener
public class DataApiRequestContextListener extends RequestContextListener {
}
В контроллере я пытаюсь установить заголовок местоположения сборки для успешного пост-запроса
@Async("webExecutor")
@PostMapping("/company")
public CompletableFuture<ResponseEntity<Object>> save(@RequestBody Company company) {
Company savedCompany = companyRepository.save(company);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedCompany.getId()).toUri();
ResponseEntity<Object> response = ResponseEntity.created(location).build();
LOGGER.debug("Reponse Status for POST Request is :: " + response.getStatusCodeValue());
LOGGER.debug("Reponse Data for POST Request is :: " + response.getHeaders().getLocation().toString());
return CompletableFuture.completedFuture(response);
}
Я получаю исключение
java.lang.IllegalStateException: No current ServletRequestAttributes
, когда я пытаюсь построить URI местоположения, используя ServletUriComponentsBuilder
в этой строке
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedCompany.getId()).toUri();