「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

系列文章(更新ing):

「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现

「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制

「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate

Fegin简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

准备工作

继续用上节的工程, 启动eureka-server,端口为8761;启动service-hi 两次,端口分别为8762 、8863

简单使用

继续使用上节的eureka-client工程

1.加入Fegin依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在启动类加上@EnableFeignClients注解,开启Feign的功能

@SpringBootApplication
@EnableEurekaClient
//加下面这个
@EnableFeignClients
public class EurekaClientApplication { public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
} @Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}

3.定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务

比如在代码中调用了service-hi服务的“/hi”接口,代码如下:

@FeignClient("service-hi")
public interface FeginClient {
//service-hi服务中名字为"hi"的接口
@GetMapping("hi")
String sayHi();
}

4.在controller层,对外暴露一个"hiFromFegin"的API接口,通过上面定义的Feign客户端sayHi 来消费服务

//编译器报错,无视。
//因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
@Autowired
private FeginClient feginClient; @GetMapping("hiFromFegin")
public String hiFromFegin() {
return feginClient.sayHi();
}

5.启动程序,多次访问http://localhost:8861/hiFromFegin,浏览器交替显示

hi!i am come from 8862hi!
i am come from 8863

至此,使用Feign消费服务已实现,Feign内置ribbon,带负载均衡的效果

Feign的优势(相比RestTemplate)

1.声明式的REST客户端,通过编写简单的接口和插入注解,只需要像调用本地方法一样调用它就可以完成服务请求及相关处理,使REST调用更加简单

若使用RestTemplate,则需要深入了解HTTP级别API的细节。

2.内置Ribbon,配合Eureka实现负载均衡

如果觉得不错,分享给你的朋友!

「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

THANDKS

  • End -

一个立志成大腿而每天努力奋斗的年轻人

伴学习伴成长,成长之路你并不孤单!

「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

上一篇:jquery mobile上传图片完整例子(包含ios图片横向问题处理和C#后台图片压缩)


下一篇:ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings,及.NET Core控制台项目中读取AppSettings