RequestInterceptor
1.如果实现类添加@Component注解,全局生效
@Component
public class MyRequestInterceptor implements RequestInterceptor
2.如果在FeignClient注解配置对应的RequestInterceptor,并且RequestInterceptor没有注解@Component,只会在当前FeignClient生效
public class MyRequestInterceptor implements RequestInterceptor {}
@FeignClient(name = "user-service", configuration = {MyRequestInterceptor.class})
configuration使用中的一些问题
1.配置类如果注解@Component,则对全局生效
@Component
public class FeignContractConfig{
@Bean
public Contract feignContract() {
return new Contract.Default();
}
}
2.配置类如果没有注解@Component,若想使用该配置,则需在@FeignClient引用该配置,
(注意:FeignContractConfig中对应配置属性需要注解@Bean)
public class FeignContractConfig{
@Bean
public Contract feignContract() {
return new Contract.Default();
}
}
@FeignClient(name = "user-service", configuration = {FeignContractConfig.class})
根据以上结论:在使用Feign提供的那套注解时,只需引用FeignContractConfig配置即可。实现不同FeignClient分别使用SpringMVC和Feign注解共存的问题
---------------------------------------
@FeignClient占位符使用
@FeignClient(name = "${feign.name.user}", url = "${feign.url.user}")
application.yml 配置对应的值
feign:
url:
user: http://localhost:8080
xxx: http://api.xxx.com
name:
user: user-service
xxx: xxx-service