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", ...));