我正试图使用foreign拦截器来处理我使用completable future调用的foreign请购单,但ServletRequestAttributes只返回null。
public class FeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String bearerToken = request.getHeader(AUTHORIZATION);
requestTemplate.header(AUTHORIZATION, bearerToken);
}
}
public Object searchObject() {
Object[] listFutures;
try {
listFutures = Stream.of(getObjectFuture1(), getObjectFuture2(), getObjectFuture3())
.map(CompletableFuture::join)
.toArray(Object[]::new);
} catch(Exception e) {
throw e.getCause();
}
// Rest of the code
return listFutures[0];
}
private CompletableFuture<Object> getObjectFuture1() {
return CompletableFuture.supplyAsync(() -> feignClient.detailObject(null));
}
private CompletableFuture<Object> getObjectFuture2() {
return CompletableFuture.supplyAsync(() -> feignClient.listObject(true));
}
private CompletableFuture<Object> getObjectFuture3() {
return CompletableFuture.supplyAsync(() -> feignClient.listObject(true));
}
我找了很长时间的anwser,但找不到。