摘要
微服务架构中,若各个微服务通过RestTemplate相互调用,较为不便,SpringCloud整合了Feign,服务相互调用的Web客户端。本文介绍如何使用Feign。
参考文档:http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#_spring_cloud_openfeign
略:22.4、22.7-
正文
1.1 如何加入Feign
- 加入Feign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
为被调用服务创建FeignClient
此处以user-service服务的findById接口为例
@FeignClient(name="user-service")
public interface UserFeignClient{
@RequestMapping(value="/{id}", method = RequestMethod.GET)
public User finaById(@PathVariable("id") Long id);
}
- 启动加入
@EnableFeignClients
注解声明开启Feign
@SpringBootApplication
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
可以通过url属性指定请求,如:@FeignClient(name="xxx",url="http://ip:port/")
1.2 自定义Feign配置
1.2.1 配置类实现自定义配置
SpringCloud默认为每个FeignClient创建一个FeignClientsConfiguration
,可以通过@FeignClient(name="user-service",configuration = UserServiceFeignClientConfig.class)
的方式自定义FeignClient配置,这种情况下配置由FeignClientsConfiguration
和UserServiceFeignClientConfig
共同组成(后者优先级较高)。
注:UserServiceFeignClientConfig
可以不标注