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
相关推荐
pnoker4 分钟前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy5 分钟前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
天远数科38 分钟前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
步行cgn1 小时前
YAML 的语法规则
spring boot·后端
骇客野人1 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng11 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3222 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步3 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
野熊佩骑4 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes