Ich benutze die neueste Spring Data Rest und ich handle das Ereignis "vor dem Erstellen". Die Anforderung besteht darin, auch die HTTP-Header zu erfassen, die an den POST Endpunkt für das Modell "Client" gesendet wurden. Die Schnittstelle für den RepositoryEventHandler stellt das jedoch nicht bereit.Spring Data Rest - So erhalten Sie Header in @RepositoryEventHandler
@Component
@RepositoryEventHandler
public class ClientEventHandler {
@Autowired
private ClientService clientService;
@HandleBeforeCreate
public void handleClientSave(Client client) {
...
...
}
}
Wie können wir Ereignisse verarbeiten und die HTTP-Header erfassen? Ich hätte gerne Zugriff auf den Parameter wie Spring MVC, die die @RequestHeader HttpHeaders Header verwendet.
Ich habe dich nicht getestet, aber können '@ Autowired' die 'HttpServletRequest' direkt wie '@Autowired \t private HttpServletRequest Anfrage;' dann verwenden Sie 'request.getHeader (" User-Agent ")' .Können Sie bitte Beispiel hier https://www.mkyong.com überprüfen/java/how-to-get-http-anfrage-header-in-java/ –
HttpServletRequest ist keine von Spring verwaltete Bean und kann daher nicht automatisch gestartet werden. –
Ohne einen benutzerdefinierten Controller wäre eine Idee ein Servlet-Filter, der die erforderlichen Werte mit einem ThreadLocal an den aktuellen Thread bindet und sie über einen statischen Aufruf verfügbar macht. Siehe zum Beispiel http://veerasundar.com/blog/2010/11/java-thread-local-how-to-use-and-code-sample/ oder http://blog.smartbear.com/programming/how- und-wenn-zu-verwenden-javas-threadlocal-object/ –