Feign全局配置和局部配置


Feign全局配置和局部配置

在使用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
)

注意:

  1. 全局配置的時候,就不需要在具體的FeignClient類中再配置configuration屬性了。
  2. 全局配置會使得所有的@FeignClient類都生效,因為@configuration會自動注冊到Spring中,導致feign默認使用該配置。

局部配置:

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);

}

注意:

  1. ManagerFeignConfig 類不要加任何Spring注解,防止注入到Spring中,導致所有FeignClient都生效。
  2. FeignClient會自動將ManagerFeignConfig 類注入到Spring容器並且只應用到具體的FeignClient類中,因此,也可以在ManagerFeignConfig中使用@Value注解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM