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