Я использую последний Spring Data Rest, и я обрабатываю событие «перед созданием». Требование, которое у меня есть, - также захватить заголовки HTTP, отправленные на конечную точку POST для модели «Клиент». Однако интерфейс для RepositoryEventHandler не предоставляет этого.Spring Data Rest - Как получить заголовки в @RepositoryEventHandler
@Component
@RepositoryEventHandler
public class ClientEventHandler {
@Autowired
private ClientService clientService;
@HandleBeforeCreate
public void handleClientSave(Client client) {
...
...
}
}
Как мы можем обрабатывать события и захватывать заголовки HTTP? Я хотел бы иметь доступ к параметру Spring MVC, который использует заголовки @RequestHeader HttpHeaders.
Я не проверял, но вы можете '@ Autowired'' HttpServletRequest 'непосредственно, как' @Autowired \t частный запрос HttpServletRequest; 'затем использовать' request.getHeader («user-agent») '. Можете ли вы проверить пример здесь https://www.mkyong.com/java/how-to-get-http-request-header-in-java/ –
HttpServletRequest не является управляемым компонентом Spring, поэтому он не может быть автообновлен. –
Без настраиваемого контроллера одной идеей будет фильтр Сервлета, который связывает требуемые значения с текущим потоком с помощью ThreadLocal и делает их доступными через статический вызов. См. Например http://veerasundar.com/blog/2010/11/java-thread-local-how-to-use-and-code-sample/ или http://blog.smartbear.com/programming/how- и-когда-к-использованию-javas-threadlocal-object/ –