首页 > 其他分享 >SpringCloud - Feign

SpringCloud - Feign

时间:2023-09-09 10:58:21浏览次数:52  
标签:Feign SpringCloud springframework order user id User

目录

Feign 入门

先看 RestTemplate 发起远程调用的代码:

        String url = "http://userservice/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);

存在以下问题:

  • 代码可读性差,编程体验不统一
  • 参数复杂URL难以维护

Feign 是一个声明式的http 客户端,官方地址:https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题

使用入门:
1.引入依赖

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

2.启动类开启注解

3.编写客户端

package cn.itcast.order.client;


import cn.itcast.order.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient("userservice")
public interface UserClient {
  
    /*
    主要是使用SpringMVC的注解来声明远程调用:
      1.服务名称:userservice
      2.请求方式:Get
      3.请求路径:/user/{id}
      4.请求参数: Long id
      5.返回值类型:User
    */
    @GetMapping("/user/{id}")
    User fingById(@PathVariable("id") Long id);
}

4.修改order-service

@Autowired
private UserClient userClient;

public Order queryOrderById(Long orderId) {
    // 1.查询订单
    Order order = orderMapper.findById(orderId);
    //2.查询用户信息
    User user = userClient.fingById(order.getUserId());
    order.setUser(user);
    // 3.返回
    return order;
}

标签:Feign,SpringCloud,springframework,order,user,id,User
From: https://www.cnblogs.com/czzz/p/17689018.html

相关文章

  • 一、SpringCloud Alibaba之普通应用
    1.1、创建一个maven项目新建项目操作路径:File->new->project输入相关的配置:Name:项目名称Location:项目所在位置ArtifactCoordinates:项目坐标(制品坐标)更改配置文件在项目中指定了打包方式为pom方式,此时项目目录下就不需要src目录,只保留一个pom.xml文件就行。创......
  • springCloud学习笔记整理
    springCloud学习笔记整理1.分布式分布式的概念:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。分布式架构的优缺点:优点:降低服务耦合有利于服务升级和拓展缺点:服务调用关系错综复杂2.微服务微服务的上述特性其实是在给分布式架构制......
  • SpringCloud知识点整理
         ......
  • springcloud项目添加多个应用到启动列表中dashboard
    在微服务项目中,我们经常会有多个应用需要启动,如果不进行设置的话,会出现刚启动的应用将已经启动的应用给顶掉,这个时候,我们可以将启动的应用进行保存就可以了,这样,我们在应用启动列表中就能够看到我们所有的启动的应用了,并且还能够对这些应用进行关闭或者启动 ......
  • SpringCloudAlibaba之Sentinel介绍
    目录1Sentinel1.1Sentinel简介1.2核心概念1.2.1资源1.2.2规则1.3入门Demo1.3.1引入依赖1.3.2集成Spring1.3.3Spring中资源规则1.4Sentinel控制台1.5核心原理1.5.1NodeSelectorSlot1.5.2ClusterBuilderSlot1.5.3LogSlot1.5.4StatisticSlot1.5.5AuthoritySlot1.5.6......
  • SpringBoot+Nacos+OpenFeign实现服务的注册、发现、远程调用
    一、概述微服务的开发必定会用到SpringBoot、Nacos(服务发现、注册、配置中心)、OpenFeign(服务远程调用,也就是通过注解调用其他服务的接口)。今天写这篇是想把这三个功能集成在一起。让他们一起参与微服务的开发工作。要实现的目标:nacos要能够注册及发现服务,openfeign......
  • SpringCloud笔记
    微服务技术栈:                                              ......
  • SpringCloud中Ribbon负载均衡配置
    配置方法在启动类配置,使用此配置方法,对应全部服务都会进行该规则的负载均衡@BeanpublicIRulerandomRule(){//方法名及返回值根据下表修改即可returnnewRandomRule();}在对应yml文件配置,使用这种方法可以对某一个服务单独配置userservice:#给某个微......
  • 手写Openfeign实现原理——极简版
    文章目录前言Openfeign实现思路前期准备基本依赖项开始实现自定义注解自定义代理类定义创建代理对象的工厂InstantiationAwareBeanPostProcessor实现bean的注入OpenInstantiationAwareBeanPostProcessor自定义feign接口启动类小结踩坑记录@Import@Component和@Configuration区别......
  • 微服务网关 —— SpringCloud Gateway
    Gateway简介SpringCloudGateway基于Spring5、SpringBoot2和ProjectReactor等技术,是在Spring生态系统之上构建的API网关服务,Gateway旨在提供一种简单而有效的方式来对API进行路由以及提供一些强大的过滤器功能,例如熔断、限流、重试等SpringCloudGateway具......