【15-项目中服务的远程调用之OpenFeign&订单模块与商品模块集成使用OpenFeign的案例】

本文介绍如何在订单模块中使用OpenFeign调用商品模块的服务,包括配置依赖、创建接口及控制器,并展示了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.知识回顾

【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】
【1-系统架构演进过程】
【2-微服务系统架构需求】
【3-高性能、高并发、高可用的三高商城系统项目介绍】
【4-Linux云服务器上安装Docker】
【5-Docker安装部署MySQL和Redis服务】
【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】
【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】
【8-数据库表结构的创建&后台管理系统的搭建】
【9-前端项目的搭建部署、Node安装、VSCode安装】
【10-Node的安装以及全局环境变量的相关配置&解决启动报错的问题(1.Error: Cannot find module ‘fs/promises)(2.npm安装node-sass报错)】
【11-导入人人generator项目并自动生成相关的文件&商品子模块的调试&公共模块common子模块的抽离与实现&Lombok插件的安装】
【12-商品子模块整合MyBatisPlus技术&其它模块通过generator的自动生成与补充完善】
【13-项目中微服务组件的学习-SpringCloudAlibaba微服务生态体系的学习&SpringCloudAlibaba的依赖管理&项目中SpringBoot和SpringCloud版本的统一】
【14-微服务的注册中心与配置中心Nacos&Windows操作系统上安装Nacos和Linux操作系统上用Docker中安装Nacos&每个子项目模块使用Nacos进行服务注册与发现】

二.RPC远程服务调用框架之OpenFegin

OpenFegin是一个声明式的服务调用组件。本质上是封装的Ribbon实现的。

在这里插入图片描述

三.基于订单模块通过OpenFeign调用商品模块的案例

3.1 商品模块的逻辑操作

先在商品服务中定义一个对外提供功能的接口

/**
     * TODO:openFeign的demo案例
     * 商品模块中为我们接下来订单模块的远程调用提供接口
     * @return
     */
    @GetMapping("/queryBrand")
    public R queryBrand(){
        BrandEntity brandEntity=new BrandEntity();
        brandEntity.setName("奔驰");
        return R.ok().put("brank",brandEntity);
    }

在这里插入图片描述

3.2 订单模块的逻辑操作

我们在订单服务中集成OpenFegin和loadbalancer依赖,完成对应的商品服务调用,如果没有引入loadbalancer会报错。

订单模块中引入相关的依赖

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

在这里插入图片描述

然后创建对应的feign包,feign包下创建ProductFeignService接口

import com.ljw.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @FeignClient TODO:指明我们要从注册中心中发现服务的名称为 mall-product
 */
@FeignClient(name = "mall-product")
public interface ProductFeignService {
    
    /**
     * 需要访问远程商品模块中对应的接口方法
     * @return
     */
    @GetMapping("/product/brand/queryBrand")
    public R queryBrand();
}

在这里插入图片描述
然后在Order的控制器中完成商品服务的调用

//TODO:注入我们远程调用的接口
    @Autowired
    ProductFeignService productFeignService;

    /**
     * TODO:订单模块的控制器中提供对应的接口方法--》OpenFegin--》远程调用服务---》也就是我们的商品模块
     * @return
     */
    @GetMapping("/products")
    public R queryProduct(){
        // OpenFegin 远程调用服务
        return R.ok().put("products",productFeignService.queryBrand());
    }

在这里插入图片描述

还商品模块的的主启动类中开启远程调用

/**
 * 
 * TODO:@EnableFeignClients 注解用来扫描我们的接口
 * TODO:注解当中的参数是扫描的路径--->(basePackages = "com.ljw.mall.order.feign")
 */
@EnableFeignClients(basePackages = "com.ljw.mall.order.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.ljw.mall.order.dao")
public class MallOrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallOrderApplication.class, args);
    }

}

在这里插入图片描述

启动服务访问订单模块下对应商品模块提供对应的接口服务
在这里插入图片描述

好了,到这里【15-项目中服务的远程调用之OpenFeign&订单模块与商品模块集成使用OpenFeign的案例】就结束了,更多内容持续更新创作中。

### OpenFeign 使用案例 #### 项目结构概述 为了展示如何使用OpenFeign,在一个基于Spring Cloud的应用程序中,项目模块化设计如下: - `springcloud-openfeign-example`:根目录。 - `kerwin-common`:共享库。 - `kerwin-order`:订单服务模块- `kerwin-order-app`:订单服务应用入口。 - `kerwin-order-client`:用于定义远程调用接口的客户端。 - `kerwin-user`:用户服务模块- `kerwin-user-app`:用户服务应用入口。 - `kerwin-user-client`:用于定义远程调用接口的客户端。 #### POM 文件配置 在Maven工程中的pom.xml文件里需引入必要的依赖来支持OpenFeign的功能[^1]。对于上述提到的服务端和客户端模块而言,应该确保它们都包含了对`org.springframework.cloud:spring-cloud-starter-openfeign`这个starter的支持。 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign&lt;/artifactId> </dependency> ``` #### 客户端 Feign Interface 实现 通过创建一个简单的Java接口并加上特定注解就可以轻松完成HTTP请求映射到方法上的工作。下面是一个来自`kerwin-user-client`的例子,展示了怎样声明一个针对用户信息服务API的方法签名[^2]。 ```java @FeignClient(name="user-service", url="${service.url.user}") public interface UserClient { @GetMapping("/users/{id}") ResponseEntity<UserDTO> getUserById(@PathVariable("id") Long id); } ``` 这里的关键在于使用了`@FeignClient`注解指定目标微服务名称以及可选的基础URL路径;同时利用标准的Spring MVC注解如`@GetMapping`, `@PostMapping`等来进行具体的路由匹配操作。 #### 启动类设置 为了让应用程序能够识别并加载这些由开发者编写的Feign Client接口,还需要做一点额外的工作——即是在主应用程序启动类上添加@EnableFeignClients注解以便开启扫描机制自动发现所有的Feign Clients实例。 ```java @SpringBootApplication @EnableFeignClients(basePackages = "com.example.clients") public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } } ``` 以上就是关于如何在一个典型的Spring Boot/Spring Cloud环境中集成运用OpenFeign的一个简单介绍及其对应的实践指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值