SpringCloud之Feign

SpringCloud之整合ribbon中使用Spring的RestTemplate整合Ribbon负载均衡以实现消费者调用服务提供者的服务。
了解到了Feign这个组件,既能调用服务提供者的服务,又能负载均衡,不需要多余的整合。
在这里插入图片描述

一、Feign简介

Feign是Netflix开发的声明式,模板化的HTTP客户端,

  • 微服务之间的调用本质还是http请求,使用feign只需要定义一个interface,就能实现服务之间的调用。
  • Feign集成了Ribbon技术,所以也支持负载均衡(轮询)

二、映入依赖

服务提供者和服务提供者都需要引入feign的依赖

<!--引入Feign-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--引入Feign-->

三、配置

3.1 服务提供者

需要在服务的启动类上加注解

@EnableFeignClients

3.2 服务消费者

1.在服务的启动类上加注解

@EnableFeignClients

2.创建调用提供者的接口

  • FeignCilent注解,填写调用的服务在Eurake中注册的服务名称
  • 调用方法的请求路径和请求类型,写服务提供者对应方法的路径和请求类型
@FeignClient("SERVICE-PROVIDER-USER")
public interface UserService {

    @RequestMapping(value = "/user/findAll")
    public List<UserBean> queryAll();
     
    @RequestMapping(value = "/user/updateName",method = RequestMethod.GET)
    public void updateName(@RequestParam String name);
}

四、传递参数

4.1 基本数据类型

restful风格参数,使用@PathVariable注解声明

@RequestMapping("/{id}/queries")
public UserBean getUser(@PathVariable Long id);

4.2 传递数组类型的参数

使用@RequestParam注解声明

@RequestMapping(value = "/user/updateName",method = RequestMethod.GET)
public void updateName(@RequestParam String name);

4.3 传递带有对象的参数

使用@RequestBody注解声明

@RequestMapping(value = "/user/update",method = RequestMethod.PUT)
public void update(@RequestBody UserBean user);

五、测试

服务消费者调用updateName方法两次。
第一次,服务提供者1的updateName接口被调用
在这里插入图片描述
第一次,服务提供者2的updateName接口被调用
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值