使用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);
    }
}
相关推荐
m0_749299956 分钟前
Nginx主配置文件
java·服务器·nginx
╭╰4028 分钟前
苍穹外卖优化-续
java·spring·mybatis
金銀銅鐵14 分钟前
[Java] 枚举常量的精确类型一定是当前枚举类型吗?
java·后端
邂逅星河浪漫16 分钟前
Spring Boot常用注解-详细解析+示例
java·spring boot·后端·注解
青鱼入云18 分钟前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
Darenm11118 分钟前
python进程,线程与协程
java·开发语言
睡觉的时候不会困31 分钟前
MySQL 高可用方案之 MHA 架构搭建与实践
数据库·mysql·架构
凯哥Java37 分钟前
适应新环境:Trae编辑器下的IDEA快捷键定制
java·编辑器·intellij-idea
從南走到北40 分钟前
JAVA同城打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
java·开发语言·微信·微信小程序·小程序
落日漫游1 小时前
K8s资源管理:高效管控CPU与内存
java·开发语言·kubernetes