Feign的使用流程
1.添加依赖
在项目的pom.xml 中添加Spring Cloud OpenFeign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
2.启用Feign客户端
在Sping Boot启动类上添加@EnableFeignClients
@SpringBootApplication
@EnableFeignClients // 启用 Feign 客户端
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.定义Feign接口
创建一个接口,使用 @FeignClient 注解声明要调用的服务名称,并通过 Spring MVC 注解定义 API 路径和参数。
@FeignClient(name = "user-service") // 指定目标服务名(注册中心中的服务名)
public interface UserServiceClient {
// 定义 REST 接口(与目标服务的 Controller 方法一致)
@GetMapping("/users/{id}")
User getUserById(@PathVariable("id") Long id);
@PostMapping("/users")
User createUser(@RequestBody User user);
}
4.配置Fegin(可选)
在 application.yml 中配置 Feign 的超时、日志、编解码器等
feign:
client:
config:
default: # 全局配置
connectTimeout: 5000 # 连接超时(ms)
readTimeout: 5000 # 读取超时(ms)
user-service: # 针对特定服务的配置
loggerLevel: full # 日志级别(none/basic/headers/full)
# 启用 HTTP 客户端(默认是 JDK 的 HttpURLConnection,可切换为 Apache HttpClient 或 OKHttp)
httpclient:
enabled: true
5.注入Feign客户端并调用
在其他组件(如 Controller 或 Service)中直接注入 Feign 接口,像调用本地方法一样发起 HTTP 请求
@RestController
public class UserController {
@Autowired
private UserServiceClient userServiceClient; // 注入 Feign 客户端
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
return userServiceClient.getUserById(id); // 调用远程服务
}
}
浙公网安备 33010602011771号