Feign 的使用
什么是Feign?
Feign : Declarative REST clients。
Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign
创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring
Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters
, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。(来源于Spring Cloud Netflix 官网文档)
- Feign 在 github 上的开源文档 : https://github.com/OpenFeign/feign/wiki
怎么使用Feign
首先继续使用上次的”服务注册中心”与”服务提供者”。接下来,就是将 Fegin 整合到”服务消费者”中。
引入依赖
1 2 3 4 | <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> |
注入注解
在 Spring Boot 主类加入注解@EnableFeignClients
开启 Fegin 功能。
注入接口
创建接口,具体如下:
1 2 3 4 5 6 7 | @Component @FeignClient (value = "my-service" ) public interface ServiceClient { @RequestMapping ( "/service" ) String printf(); } |
- 使用
@Component
注解向 Spring Boot 中注入该组件。 - 使用
@FeignClient("")
注解来绑定该接口对应的服务 - 通过 Spring MVC 的注解来配置服务下的具体实现。
在Controller中调用接口
1 2 3 4 5 6 7 8 9 10 11 | @RestController public class ConsumerController { @Autowired private ServiceClient serviceClient; @RequestMapping ( "/test" ) public String test(){ return serviceClient.printf(); } } |
最后,启动”注册中心”、”服务提供者”、”服务消费者”等工程。访问 http://localhost:2222/test 就可以在”服务提供者”控制台查看到负载均衡的实现。
注意事项
注意注意注意
当Spring Cloud版本为 Brixton.RELEASE
,会抛出异常:
1 | Attribute ‘value’ in annotation [org.springframework.cloud.netflix.feign.FeignClient] must be declared as an @AliasFor [serviceId], not [name] |
解决办法:
将Spring Cloud版本改为 Brixton.SR5
或 Camden.RELEASE
即可。
标签:
Spring Cloud
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具