下面列出了怎么用org.springframework.core.NamedThreadLocal的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void defaultRequest() {
ThreadLocal<String> context = new NamedThreadLocal<>("foo");
Map<String, Object> actual = new HashMap<>();
ExchangeFilterFunction filter = (request, next) -> {
actual.putAll(request.attributes());
return next.exchange(request);
};
WebClient client = this.builder
.defaultRequest(spec -> spec.attribute("foo", context.get()))
.filter(filter)
.build();
try {
context.set("bar");
client.get().uri("/path").attribute("foo", "bar")
.exchange().block(Duration.ofSeconds(10));
}
finally {
context.remove();
}
assertEquals("bar", actual.get("foo"));
}
@Test
public void defaultRequest() {
ThreadLocal<String> context = new NamedThreadLocal<>("foo");
Map<String, Object> actual = new HashMap<>();
ExchangeFilterFunction filter = (request, next) -> {
actual.putAll(request.attributes());
return next.exchange(request);
};
WebClient client = this.builder
.defaultRequest(spec -> spec.attribute("foo", context.get()))
.filter(filter)
.build();
try {
context.set("bar");
client.get().uri("/path").attribute("foo", "bar").exchange();
}
finally {
context.remove();
}
assertEquals("bar", actual.get("foo"));
}