Feign进行分布式服务调用

本文介绍如何使用Feign进行分布式服务调用,包括添加依赖、配置注解、创建Feign接口、实现服务接口及Controller接收请求。通过示例展示Feign简化HTTP请求过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 添加feign依赖

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
      <version>2.1.1.RELEASE</version>
    </dependency>

2. 启动类上添加@EnableFeignClients注解

3. 服务消费方创建Feign接口

这里是继承服务提供方提供出来的feign接口(pom文件添加了服务提供方的api模块)

    @FeignClient(name = "blog-article", fallback = ArticleFallback.class)
    public interface ArticleClient extends ArticleService{

    }  


服务提供方提供的feign接口(@GetMapping注解上的路径就是Feign调用的http请求路径)

    public interface ArticleService {
    	@GetMapping(value = "/article/user-article/list")
    	ResponseVO<PageInfo<ArticleListVO>> queryUserArticleList(@RequestParam UserArticleListParamVO vo, @RequestParam PageParams pageParams);
    }  

4. 服务提供方添加接口的具体实现

    @Service("articleService")
    public class ArticleServiceImpl implements ArticleService{

    	@Autowired
    	private ArticleMapper articleMapper;

    	@Override
    	public ResponseVO<PageInfo<ArticleListVO>> queryUserArticleList(UserArticleListParamVO vo, PageParams pageParams) {
    		List<ArticleListVO> list = articleMapper.queryArticleList(vo);
    		return ResponseVO.success(new PageInfo<>(list));
    	}

    }

5. 服务提供方添加接收Feign请求的Controller(方法上的请求路径必须跟Feign接口上的一致,否则会访问不到)

    @RestController
    @RequestMapping("/article")
    public class ArticleController {

    	@Autowired
    	private ArticleService articleService;

    	@GetMapping(value = "/user-article/list")
    	public ResponseVO<PageInfo<ArticleListVO>> queryUserArticleList(@Validated UserArticleListParamVO vo, PageParams pageParams) {
    		return articleService.queryUserArticleList(vo, pageParams);
    	}
    }

总结: 这是通过Postman模拟的get请求,我们可以看到服务消费方的Feign请求日志,从日志中我们可以看到,我们调用服务提供方提供出来的Feign接口时本质是服务消费方向服务提供方发送了一个http请求。用过HttpClient的朋友应该知道,HttpClient需要我们自己通过请求头请求参数等信息组装一个request请求,从而请求对方。而使用Feign时我们只需要调用Feign接口就可以了,Feign就相当于通过Feign接口上的请求路径、参数等帮我们完成了request请求组装的过程,之后跟HttpClient一样通过http请求访问服务提供方,然后服务提供方只要提供一个Controller(其它能接收http请求的方式也行)处理我们的请求就可以完成调用。

Feign请求日志

项目源码地址:https://github.com/luckymeet/spring-cloud-seed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值