Feign的源码实现流程
- 1、首先启动类上通过@EnableFeignClients 注解,开启 FeignClient的功能。
- 2、在程序启动时开启包的扫描。把带有@ FeignClient 的注解的类信息注入IoC 容器中。
- 3、当接口的方法被调用时,通过JDK 的代理来生成RequestTemplate。
- 4、根据 RequestTemplate 生成 Http 请求的 Request对象。
- 5、Request 对象交给 Client 去处理,框架可以有HttpClient 和 OkHttp。
- 6、最终通过LoadBalanceClient类实现负载均衡。
代码的开发流程
1.引入spring-cloud-starter-openfeign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. 在主启动类上加入注解@EnableFeignClients注解
@SpringBootApplication
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class, args);
}
}
3. 编写feign接口,value为微服务的名称, fallback是熔断和降级的替代类
@FeignClient(value = "nacos-provider", fallback = NacosConsumerFeignFallback.class)
public interface NacosConsumerFeignApi {
@RequestMapping("/**/{userId}")
List<T> queryInfoByUserId(@PathVariable("userId") String userId);
}