SpringCloud 手动创建Feign客户
2023-11-24 14:28 更新
在某些情况下,可能有必要使用上述方法无法实现的方式自定义Feign客户。在这种情况下,您可以使用Feign Builder API创建客户端 。下面是一个示例,该示例创建两个具有相同接口的Feign客户端,但为每个客户端配置一个单独的请求拦截器。
@Import(FeignClientsConfiguration.class) class FooController { private FooClient fooClient; private FooClient adminClient; @Autowired public FooController(Decoder decoder, Encoder encoder, Client client, Contract contract) { this.fooClient = Feign.builder().client(client) .encoder(encoder) .decoder(decoder) .contract(contract) .requestInterceptor(new BasicAuthRequestInterceptor("user", "user")) .target(FooClient.class, "http://PROD-SVC"); this.adminClient = Feign.builder().client(client) .encoder(encoder) .decoder(decoder) .contract(contract) .requestInterceptor(new BasicAuthRequestInterceptor("admin", "admin")) .target(FooClient.class, "http://PROD-SVC"); } }
在上面的示例中,FeignClientsConfiguration.class
是Spring Cloud Netflix提供的默认配置。
PROD-SVC
是客户将向其请求的服务的名称。
Feign
Contract
对象定义在接口上有效的注释和值。自动连线的Contract
bean提供对SpringMVC注释的支持,而不是默认的Feign本机注释。
以上内容是否对您有帮助:
更多建议: