使用OpenFeign在不同微服务之间传递用户信息时失败

文章目录

起因

从pay-service中实现下单时,会调用到user-service中的扣减余额。

因此这里需要在不同微服务之间传递用户信息。

但是user-service中始终从始至终拿不到user的信息。

原因

在pay-service中,不仅要Enable OpenFeign,还要让自己编写的OpenFeign配置类生效:

但是这样只是配置了。有需要用这个配置类从当前微服务传递到下一个微服务的功能的,但是也有不需要这个配置功能的。

如何操作?

在需要调用OpenFeign的service的启动类XxxApplication(eg, PayApplication)中添加如下注解:

java 复制代码
@EnableFeignClients(basePackages = "com.hmall.api.client", basePackageClasses = PayApplication.class, defaultConfiguration = DefaultFeignConfig.class)

只有添加了defaultConfiguration = DefaultFeignConfig.class的配置类,才会在该service中让刚刚写的不同微服务之间传递用户id的功能生效。

这里的@EnableFeignClients(basePackages = "com.hmall.api.client", basePackageClasses = PayApplication.class)表示使用Feign客户端:

解决方法:

一定要不能忘记添加:
defaultConfiguration = DefaultFeignConfig.class的配置类,才会在该service中让刚刚写的不同微服务之间传递用户id的功能生效。

最终的样子如下:

java 复制代码
package com.hmall.pay;

import com.hmall.api.config.DefaultFeignConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @Author: GQLiu
 * @DATE: 2024/9/1 23:44
 */
@SpringBootApplication
@MapperScan("com.hmall.pay.mapper")
@EnableFeignClients(basePackages = "com.hmall.api.client", basePackageClasses = PayApplication.class, defaultConfiguration = DefaultFeignConfig.class)
public class PayApplication {
    public static void main(String[] args) {
        SpringApplication.run(PayApplication.class, args);
    }
}
相关推荐
橘子编程16 分钟前
操作系统原理:从入门到精通全解析
java·linux·开发语言·windows·计算机网络·面试
飞Link25 分钟前
LangGraph 核心架构解析:节点 (Nodes) 与边 (Edges) 的工作机制及实战指南
java·开发语言·python·算法·架构
程序消消乐1 小时前
第一章:Claude Code 记忆系统——架构总览与四种记忆类型
大数据·架构·agent·claude code
xuhaoyu_cpp_java1 小时前
Boyer-Moore 投票算法
java·经验分享·笔记·学习·算法
JavaEdge.1 小时前
Chrome加载已解压的扩展程序-清单文件缺失或不可读取 无法加载清单
java
iReachers1 小时前
HTML打包EXE配置管理教程:多项目打包设置一键保存、加载与切换
java·前端·javascript
Agent产品评测局1 小时前
企业预算管理自动化落地,编制管控全流程实现方案 —— 2026企业级智能体选型与架构深度解析
运维·人工智能·ai·架构·自动化
XiYang-DING1 小时前
【Java】堆
java·开发语言
Lyyaoo.1 小时前
【Java基础面经】Java 反射机制
java·开发语言·python
YXWik61 小时前
Langchain4j(1)基础对话+连续对话+工具调用 + 流式响应+结构化 JSON 输出
java