Java Spring - 拦截 REST 客户端的执行(Hystrix Feign)

Java Spring - intercepting execution of a REST Client (Hystrix Feign)

我有一个像这样的 REST 客户端界面:

public interface NameSearchClient {
    @RequestLine("POST")
    @Headers("Content-Type: application/json")
    SearchResponse searchByName(NameSearchRequest request);

}

它得到实施并 set-up 在工厂中 class 像这样:

@Component
public class NameClientFactory {
    public <T> T createFeignClient(Class<T> clientClass, String apiUrl) {
        return Feign.builder()
                .encoder(new GsonEncoder())
                .decoder(new GsonDecoder())
                .target(clientClass, apiUrl);
    }
}

我想知道是否可以编写一个方面注释,在该客户端每次调用时执行一些操作(在我的例子中是另一个 HTTP 调用)并向请求添加一个新的 header? AspectJ 是合适的工具吗?

创建一个实现 feign.RequestInterceptor 的 bean 并在其中完成您的工作:

@Component
public class FeignRequestInterceptor implements RequestInterceptor {
  @Override
  public void apply(RequestTemplate template) {
    // your code here
  }
}

另见 this answer