スプリングブートで、アプリケーションの任意のポイントでリクエストからヘッダーを取得する方法はありますか?いくつかの静的なものは素晴らしいでしょう。
サービスレイヤーでこの値が必要なため、@RequestHeader
が機能しないことに注意してください。
次のように、サービスレイヤーにHttpServletRequest
オブジェクトを挿入できます。
@Autowired
HttpServletRequest request;
private void method() {
request.getHeader("headerName");
}
ただし、Bean HttpServletRequest
にはHTTPリクエストスコープがあることに注意してください。したがって、それを非同期メソッドなどに注入することはできません。throw Runtime Exception
。
それが役に立てば幸い。
以前に同じ質問を検索していましたが、あなたが言ったように、@ RequestHeaderを使用してRestControllerメソッドでヘッダーパラメーターを使用できることがわかりました。では、それらをサービスレイヤーメソッドに誘導してみませんか。
@Autowired
ServiceLayerObj serviceLayerObj;
...
@RequestMapping
public YourReturnObj someRestServiceMethod(
@RequestBody SomeObj body,
@RequestHeader(value = "username") String username
){
return serviceLayerObj.yourServiceLayerMethod(body,username);
}