首页 > 技术文章 > Spring生态系列文章 >

SpringCloud极简入门(六)声明式REST客户端-Feign

更新时间:2018-06-02 | 阅读量(1,422)

>作者:陈刚,叩丁狼高级讲师。原创文章,转载请注明出处。 ### 一.什么是Feign >Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果 ### 二.使用Feign >1.在Consumer项目(端口为:3333)的基础上修改,添加Feigin依赖包 ``` org.springframework.cloud spring-cloud-starter-openfeign ``` >2.找到主程序类,打上@EnableFeignClients标签开启Feigin ``` @SpringBootApplication @EnableEurekaClient @EnableFeignClients public class Consumer1Application { public static void main(String[] args) { SpringApplication.run(Consumer1Application.class, args); } } ``` >3.定义Feigin接口 使用@FeignClient注解来声明Feign Client接口,该注解的value为需要远程调用的服务,而configuration指向负载均衡策略配置类 而该接口下的“provide”方法通过Feign来调用“PRODUCER”服务的“/provide”接口 ``` //PRODUCER:指向要访问的服务 //configuration = FooConfiguration.class: Feign Client配置类,指定负载均衡策略 @FeignClient(value = "PRODUCER",configuration = FooConfiguration.class) public interface MyFeignClient { //当此方法别调用会自动请求到 PRODUCER服务的 /provide 资源 @RequestMapping(value = "/provide") public String provide(@RequestParam("name") String name); } ``` ``` @Configuration public class FooConfiguration { @Bean public IRule ribbonRule() { //RandomRule : 负载均衡规则:随机 return new RandomRule(); } } ``` >4.ConsumerController增加方法feignTest,调用MyFeignClient的provide方法 ``` @Autowired private MyFeignClient myFeignClient; @RequestMapping("/feign") public String feignTest(@RequestParam("name") String name){ return myFeignClient.provide(name); } ``` >5.测试:依次启动EurekaServer,Producer,Producer2,Consumer,访问http://localhost:3333/feign?name=zs 你将会看到:“zs:你好呀这里是Producer服务”和“zs:你好呀这里是另一个Producer服务”的随机出现。说明我们的负载均衡随机算法目的达到。 注意:我们的注册中心已经实现了高可用集群,启动EurekaServer服务的时候请使用 java -jar 的方式启动。 ![WechatIMG7.jpeg](https://upload-images.jianshu.io/upload_images/807144-2a6fad17b6fed82c.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
叩丁狼学员采访 叩丁狼学员采访
叩丁狼头条 叩丁狼头条
叩丁狼在线课程 叩丁狼在线课程