代码之家  ›  专栏  ›  技术社区  ›  rafinhaLQ

在调用具有完全未来的外部请购单时,我可以使用Feign拦截器吗?

  •  0
  • rafinhaLQ  · 技术社区  · 1 年前

    我正试图使用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,但找不到。

    0 回复  |  直到 1 年前