web-dev-qa-db-ja.com

SpringBootアプリケーションのサービスレイヤーでリクエストからヘッダーを取得します

スプリングブートで、アプリケーションの任意のポイントでリクエストからヘッダーを取得する方法はありますか?いくつかの静的なものは素晴らしいでしょう。

サービスレイヤーでこの値が必要なため、@RequestHeaderが機能しないことに注意してください。

5

次のように、サービスレイヤーにHttpServletRequestオブジェクトを挿入できます。

@Autowired
HttpServletRequest request;

private void method() {
  request.getHeader("headerName");
}

ただし、Bean HttpServletRequestにはHTTPリクエストスコープがあることに注意してください。したがって、それを非同期メソッドなどに注入することはできません。throw Runtime Exception

それが役に立てば幸い。

12
wkubasik

以前に同じ質問を検索していましたが、あなたが言ったように、@ RequestHeaderを使用してRestControllerメソッドでヘッダーパラメーターを使用できることがわかりました。では、それらをサービスレイヤーメソッドに誘導してみませんか。

@Autowired
ServiceLayerObj serviceLayerObj;
...
@RequestMapping
public YourReturnObj someRestServiceMethod(
    @RequestBody SomeObj body,
    @RequestHeader(value = "username") String username
){
    return serviceLayerObj.yourServiceLayerMethod(body,username);
}
0
Kambaa