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);  // 调用远程服务
    }
}
posted @ 2025-04-01 21:30  留梦&  阅读(57)  评论(0)    收藏  举报