前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud入门之Feign篇

SpringCloud入门之Feign篇

作者头像
崔笑颜
发布2020-06-08 16:33:25
4390
发布2020-06-08 16:33:25
举报

上面介绍了 Ribbon 使用负载均衡调用微服务,但存在一个问题:消费端每个请求方法中都需要拼接请求服务的 URL 地址,存在硬编码问题且不符合面向对象编程思想。如果服务名称发生变化,消费端也需要跟着修改。

本篇文章将介绍 Feign 来解决上边的问题。

Feign 是一个声明式的 Web Service 客户端。使用 Feign 能让编写 Web Service 客户端更加简单,同时支持与Eureka、Ribbon 组合使用以支持负载均衡。

Spring Cloud 对 Feign 进行了封装,使其支持了 Spring MVC 标准注解和 HttpMessageConverters。

Feign 的使用方法是定义一个接口,然后在其上边添加 @FeignClient 注解。

添加依赖

在 common-api 和 user-web 项目中添加依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

定义接口

代码语言:javascript
复制
@FeignClient(value="USER-API")
public interface UserFeignService {
    
    @RequestMapping("/provider/user/get/{id}")
    public User get(@PathVariable("id") Integer id);
}

使用 @FeignClient 注解指定调用的微服务名称,封装了调用 USER-API 的过程,作为消费方调用模板。

修改服务消费方

代码语言:javascript
复制
@RestController
@RequestMapping("/user")
public class UserController {
    
    @Autowired
	private UserFeignService userFeignService;
	
	@RequestMapping("get/{id}")
	public User get(@PathVariable("id") Integer id) throws Exception {
	    // 使用 Feign 封装的模板
		return this.userFeignService.get(id);
	}
}

直接使用 Feign 封装模板调用服务方,从而实现面向对象编程。

启动 Feign 功能

在启动类上添加 @EnableEeignClients 注解:

代码语言:javascript
复制
@@EnableFeignClients(basePackages={"com.extlight.springcloud"})
@ComponentScan("com.extlight.springcloud")
public class ConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConsumerApplication.class, args);
	}
}

打开浏览器访问 user-web 项目,请求结果如下图:

feign
feign

源码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 添加依赖
  • 定义接口
  • 修改服务消费方
  • 启动 Feign 功能
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档