使用Feign实现声明式REST调用
为服务消费者整合Feign
添加依赖
1
2
3
4<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>创建一个Feign接口,并添加@FeignClient注解
1
2
3
4
5(name="applicationName")
public interface UserFeignClient {
(value = "/{id}")
public User findById(@PathVatiable("id")Long id);
}@FeignClient注解是任意一个服务提供方的名称,用以创建Ribbon负载均衡器。
自定义Feign配置
修改接口1
(name="applicationName", configuration = FeignConfiguration.class)
有一点值得注意的是,本例中的FeignConfiguration类不能包括在主程序上下文的@ComponentScan中,否则该类中的配置信息就会被所有的@FeignClient共享, 如果只想定义某个FeignClient客户端的配置,该点需要特别注意。此处可以配置@ComponentScan不扫描配置类的所在包
手动创建Feign
Feign对继承的支持
Feign对压缩的支持
Feign的日志
使用Feign构造多参数请求
Spring Cloud为Feign添加了Spring MVC的注解支持。
例子一
1
2
3
4
5(name="applicationName")
public interface UserFeignClient {
(value = "/{id}")
public User findById(@RequestParam Map<String, Object> map);
}例子二
1
2
3
4
5(name="applicationName")
public interface UserFeignClient {
(value = "/{id}")
public User findById(User user);
}