微服务之间的通信可以使用feign接口进行通信,传输数据内容,但是服务之间如果有文件传输时,默认不支持。需要手动引入feign-form-spring组件。
- 第一步引入依赖
<!-- feign 客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 基于feign传参MultipartFile依赖 -->
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.8.0</version>
</dependency>
- 添加注解
在主类中添加@EnableFeignClients注解
- feign客户端配置
@Configuration
public class FeignClientSupportConfig {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}
- FileServerClient定义
package com.ry.app.feign;
import com.ry.app.config.FeignClientSupportConfig;
import com.ry.app.feign.fallback.FileServerApiFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.s