【Spring Cloud】Feign详细介绍及底层原理解析
    		       		warning:
    		            这篇文章距离上次修改已过424天,其中的内容可能已经有所变动。
    		        
        		                
                Feign是一个声明式的Web服务客户端,它的目的就是让远程调用变得更简单。Feign提供了一种简单的接口注解,如@FeignClient,可以用来声明需要调用的服务。Feign可以使用Feign注解或者JAX-RS注解。Feign还支持可插拔的编码器和解码器,可以使用Spring Cloud为Feign提供的Spring Cloud OpenFeign支持。
Feign的底层使用了动态代理,当我们调用Feign客户端的方法时,Feign会生成一个Request,然后将这个Request交给下游的客户端,如OkHttpClient或者HttpURLConnection来完成最终的网络请求。
解决方案:
- 引入依赖
 
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>- 开启Feign客户端功能
 
@EnableFeignClients
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}- 创建Feign客户端
 
@FeignClient(name = "service-provider")
public interface ProviderFeignClient {
    @GetMapping("/api/resource/{id}")
    String getResourceById(@PathVariable("id") Long id);
}- 使用Feign客户端
 
@RestController
public class ConsumerController {
    @Autowired
    private ProviderFeignClient providerFeignClient;
 
    @GetMapping("/consumer/{id}")
    public String getResourceById(@PathVariable("id") Long id) {
        return providerFeignClient.getResourceById(id);
    }
}以上就是使用Spring Cloud Feign的基本步骤。
注意:Feign默认使用的是Ribbon作为客户端负载均衡器,如果你想使用其他的负载均衡器,如Spring Cloud LoadBalancer,你需要在配置文件中进行相应的配置。
评论已关闭