项目背景:
小伙伴调用第三方api 需要增加在请求 request header,使用的是FeignClient写法。
结果发现在所有的请求都加上了该header。
项目背景:
小伙伴调用第三方api 需要增加在请求 request header,使用的是FeignClient写法。
结果发现在所有的请求都加上了该header。
在使用Feign的时候需要注意是否为全局配置和局部配置,否则可能会导致各种奇怪异常,而且在调试的是否也不容易看出问题。全局配置和局部配置的差别比较微妙,稍不注意可能会出问题。因此,这里总结给大家,防止大家也出现异常的问题。
@Configuration
public class FeignConfiguration {
@Bean
public FeignBasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new FeignBasicAuthRequestInterceptor();
}
}
全局配置时不要在@FeignClient中使用configuration属性,虽然这样也不会抛错,这里一定要注意。
@FeignClient(
value = StandardServiceAPI.SERVICE_NAME,
url = "${spring.gateway.host}:${spring.gateway.port}",
configuration = FeignConfiguration.class
)
注意:
public class ManagerFeignConfig {
@Bean
public RequestInterceptor managerFeignInterceptor() {
return new ManagerFeignInterceptor();
}
}
@FeignClient(value = StandardServiceAPI.SERVICE_NAME,
url = "${spring.gateway.host}:${spring.gateway.port}",
configuration = ManagerFeignConfig.class)
public interface StandardServiceClient {
@PutMapping(StandardServiceAPI.STANDARD_PROCESS_APPLY_STATUS)
ResultData<Void> updateProcessRequestStatus(
@Valid @RequestBody
UpdateProcessRequestStatusDto updateProcessRequestStatusDto);
}
注意:
ManagerFeignConfig
类不要加任何Spring注解,防止注入到Spring中,导致所有FeignClient都生效。ManagerFeignConfig
类注入到Spring容器并且只应用到具体的FeignClient类中,因此,也可以在ManagerFeignConfig
中使用@Value注解。
文章评论