私は最新のSpring Data Restを使用しています。作成する前にイベントを処理しています。 "私が必要とするのは、モデルクライアントのPOSTエンドポイントに送信されたHTTPヘッダーもキャプチャすることです。しかし、RepositoryEventHandlerのインターフェースはそれを公開しません。Spring Data Rest - @RepositoryEventHandlerでヘッダを受け取る方法
@Component
@RepositoryEventHandler
public class ClientEventHandler {
@Autowired
private ClientService clientService;
@HandleBeforeCreate
public void handleClientSave(Client client) {
...
...
}
}
どのようにイベントを処理し、HTTPヘッダーをキャプチャできますか?私は@RequestHeader HttpHeadersヘッダーを使用するSpring MVCのようなパラメータにアクセスしたいと思います。
私がテストしたが、することができますしていません'@ Autowired' 'HttpServletRequest'は' @Autowiredのように直接入力します。 \tプライベートHttpServletRequestリクエスト; 'request.getHeader(" user-agent ")'を使用します。ここでの例はhttps://www.mkyong.com/java/how-to-get-http-request-header-in-java/ –
HttpServletRequestはSpringマネージドBeanではないため、autowiredできません。 –
カスタムコントローラーがなければ、ThreadLocalを使用して必要な値を現在のスレッドにバインドし、静的呼び出しで利用可能にするサーブレットフィルターが考えられます。たとえば、http://veerasundar.com/blog/2010/11/java-thread-local-how-to-use-and-code-sample/またはhttp://blog.smartbear.com/programming/how- and-when-use-javas-threadlocal-object/ –