Spring Web Reactive | 2. WebClient | 2.7. Context

属性(Attributes)は、フィルターチェーンに情報を渡すための便利な方法ですが、現在のリクエストにのみ影響します。flatMapを通じて実行されるネストしたリクエストや、concatMapの後に実行されるリクエストへ情報を伝播するには、ReactorのContextを使用します。

ReactorのContextは、すべての処理に適用されるように、リアクティブチェーンの最後で書き込む必要があります。例:

Java

WebClient client = WebClient.builder()
        .filter((request, next) ->
                Mono.deferContextual(contextView -> {
                    String value = contextView.get("foo");
                    // ...
                }))
        .build();

client.get().uri("https://example.org/")
        .retrieve()
        .bodyToMono(String.class)
        .flatMap(body -> {
                // perform nested request (context propagates automatically)...
        })
        .contextWrite(context -> context.put("foo", ...));