














大家知道,在SpringBoot项目中使用Feign比如简单,只需要开启@FeignClient注解,就可以调用了,但在一些SpringMVC项目中使用就比较麻烦,本文将介绍在老项目中如何相对简单的使用Feign。
Feign 是一个声明式 HTTP 调用框架,可以像调用本地方法一样调用远程服务。
<!-- Feign 核心 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
<version>12.5</version>
</dependency>
<!-- Feign Gson 支持 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-gson</artifactId>
<version>12.5</version>
</dependency>
<!-- 日志输出(Slf4j) -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-slf4j</artifactId>
<version>12.5</version>
</dependenc
例如要访问一个“用户服务”的 HTTP 接口:
package com.example.client;
import feign.Headers;
import feign.RequestLine;
public interface UserApiClient {
@RequestLine("GET /api/user/{id}")
UserResponse getUserById(@Param("id")Long id);
@RequestLine("POST /api/user/create")
@Headers("Content-Type: application/json")
CreateUserResponse createUser(CreateUserRequest request);
}
package com.example.service;
import com.example.client.UserApiClient;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import feign.Feign;
import feign.Logger;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
import feign.slf4j.Slf4jLogger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class UserApiService {
@Value("${user.api.base-url}")
private String baseUrl;
private UserApiClient buildClient() {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
return Feign.builder()
.encoder(new GsonEncoder(gson))
.decoder(new GsonDecoder(gson))
.logger(new Slf4jLogger(UserApiClient.class))
.logLevel(Logger.Level.FULL) // 输出详细日志
.target(UserApiClient.class, baseUrl);
}
public UserResponse getUser(Long id) {
return buildClient().getUserById(id);
}
public CreateUserResponse createUser(CreateUserRequest req) {
return buildClient().createUser(req);
}
}
注意在 application.properties 文件中添加 user.api.base-url=http://example.com
UserResponse user = userApiService.getUser(1001L);
CreateUserRequest req = new CreateUserRequest();
req.setName("Tom");
req.setEmail("tom@example.com");
CreateUserResponse resp = userApiService.createUser(req);
如果本文对你有帮助,欢迎点赞、收藏、关注!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。