「 从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+RestTemplatespring

Fegin简介

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

准备工做

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

简单使用

继续使用上节的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 来消费服务spa

//编译器报错,无视。 
//由于这个Bean是在程序启动的时候注入的,编译器感知不到,因此报错。
@Autowired
private FeginClient feginClient;

@GetMapping("hiFromFegin")
    public String hiFromFegin() {
        return feginClient.sayHi();
    }

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

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

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

Feign的优点(相比RestTemplate)

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

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

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

若是以为不错,分享给你的朋友!

image

image

 THANDKS

  • End -

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

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

扫描二维码,关注公众号

相关文章
相关标签/搜索