Spring Cloud 声明式REST客户端 OpenFeign -- 3. 手工创建Feign客户端

本文介绍如何使用FeignBuilderAPI创建定制化的Feign客户端,通过不同requestinterceptor实现特定需求,如基本认证。

有时候有可能基于注解和配置属性的方法(参考"Spring Cloud 声明式REST客户端 OpenFeign – 2. 覆盖Feign缺省值")没法满足我们的定制需求。这种情况下,我们可以使用Feign Builder API创建feign客户端。下面的例子中,我们创建了两个feign客户端,使用同一个接口,但是每个feign客户端使用一个不同的request interceptor

@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");
    }
}

注意,上面例子中:

  1. FeignClientsConfiguration.classSpring Cloud Netflix提供的缺省配置;
  2. PROD-SVCfeign客户端要请求的目标服务的服务名称;
  3. Feign Contract对象定义了接口上使用那些注解和值,自动装配的Contract bean支持的是Spring MVC注解而不是Feign缺省的原生注解。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值