文章目录
起因
从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);
}
}