使用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);
    }
}
相关推荐
老前端的功夫7 分钟前
Vue 3 vs Vue 2 深度解析:从架构革新到开发体验全面升级
前端·vue.js·架构
爱笑的眼睛111 小时前
超越剪枝与量化:下一代AI模型压缩工具的技术演进与实践
java·人工智能·python·ai
阿里云云原生1 小时前
Android App 崩溃排查指南:阿里云 RUM 如何让你快速从告警到定位根因?
android·java
历程里程碑1 小时前
C++ 9 stack_queue:数据结构的核心奥秘
java·开发语言·数据结构·c++·windows·笔记·算法
醇氧1 小时前
【Windows】从守护到终结:解析一个 Java 服务的优雅停止脚本
java·开发语言·windows
努力发光的程序员1 小时前
互联网大厂Java求职面试实录
java·jvm·线程池·多线程·hashmap·juc·arraylist
小鹿学程序1 小时前
FileZilla连接到虚拟机
java·服务器·开发语言
Haooog1 小时前
Docker面试题(不定时更新)
java·docker·面试
feathered-feathered2 小时前
Redis基础知识+RDB+AOF(面试)
java·数据库·redis·分布式·后端·中间件·面试
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 高校排课系统的优化设计与实现为例,包含答辩的问题和答案
java·eclipse