我有许多为其定义了“全局” RequestInterceptor的客户端。对于其中一位客户,我需要将此“全局”拦截器排除在外。是否可以为特定的FeignClient覆盖完整的RequestInterceptor集?

@FeignClient(value = "foo", configuration = FooClientConfig.class)
public interface FooClient {
//operations
}

@Configuration
public class FooClientConfig{

//How do I exclude global interceptors from this client configuration?
}

使用的spring-cloud-netflix版本是1.1.0 M5

最佳答案

似乎没有简单的方法可以覆盖全局拦截器。
我认为您可以这样做:

@Configuration
public class FooClientConfig{

@Bean
RequestInterceptor globalRequestInterceptor() {
    return template -> {
        if (template.url().equals("/your_specific_url")) {
            //don't add global header for the specific url
            return;
        }

        //add header for the rest of requests
        template.header(AUTHORIZATION, String.format("Bearer %s", token));
    };
}
}

10-07 17:08