SpringBoot微服务Feign抽取公共模块

1.概述

当多个模块都需要调用同一个服务下的接口时,可以将Feign接口抽取到公共模块,降低代码冗余和实现代码复用。

2.实现Feign接口的写法

2.1优点

  • 可以将服务间调用的接口完全私有化,仅供内部调用;
  • 一个Feign接口中可以写同一个服务下的多个controller下的接口方法;

2.2实现步骤

  • 公共模块:编写Feign接口
  • 被调用模块:实现Feign接口,并在类上加@RestController
  • 调用模块:1.启动类加@EnableFeignClients注解,2.yml:feign.sentinel.enable: true
  • 服务之间调用参数,使用定义param对象传参,不能使用doamin(仅当前服务中使用)
第一步:编写Feign接口
java 复制代码
/**
 * 登录Feign接口
 *
 * @author 
 * @date 2024/01/31
 */
@FeignClient(value = Constants.Remote.SERVICE_UAA, contextId = "loginApi", fallbackFactory = LoginApiFallbackFactory.class)
public interface LoginApi {


    /**
     * app登录
     *
     * @param appLoginParam 应用登录参数
     * @return {@link R}<{@link Void}>
     */
    @PostMapping(Constants.Remote.PREFIX_LOGIN_REMOTE + "/appLogin")
    R<Void> appLogin(@RequestBody @Valid AppLoginParam appLoginParam);
}
第二步:被调用模块:实现Feign接口

注意:一定要加@RestController注解

java 复制代码
/**
 * 登录API
 *
 * @author 
 * @date 2024/01/31
 */
@RestController
public class LoginApiImpl implements LoginApi {
    @Autowired
    private ILoginService loginService;

    /**
     * 微信程序登录
     *
     * @param appLoginParam 应用登录参数
     * @return {@link R}<{@link Void}>
     */
    @Override
    public R<Void> appLogin(@RequestBody AppLoginParam appLoginParam) {
        loginService.appLogin(appLoginParam);
        return R.success();
    }
}
第三步:调用模块注入Feign发起调用
  1. 导入公共模块的Feign接口
  2. 启动类加@EnableFeignClients注解
  3. yml:feign.sentinel.enable: true
相关推荐
魂梦翩跹如雨2 分钟前
P8615 [蓝桥杯 2014 国 C] 拼接平方数——Java解答
java·c语言·蓝桥杯
学习路上_write6 分钟前
FREERTOS_任务通知——使用
java·前端·javascript
rabbit_pro18 分钟前
Java 文件上传到服务器本地存储
java·服务器·python
q_191328469530 分钟前
基于Springboot2+Vue2的旅游景点购票系统
java·vue.js·spring boot·后端·mysql·毕业设计·计算机毕业设计
XL's妃妃32 分钟前
Java 基准测试工具 JMH 详细介绍
java·开发语言·测试工具
Z3r4y33 分钟前
【代码审计】RuoYi-4.7.1&4.8.1 Thymeleaf模板注入分析
java·web安全·ruoyi·代码审计·thymeleaf
元直数字电路验证42 分钟前
Jakarta EE (原 Java EE) 技术栈概览
java·java-ee
多则惑少则明1 小时前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
不会编程的小寒1 小时前
C and C++
java·c语言·c++
一 乐1 小时前
鲜花销售|基于springboot+vue的鲜花销售系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring