4、声明式服务消费 Feign

本文介绍了如何使用Spring Cloud的Feign组件简化微服务间的REST调用,包括添加依赖、创建FeignClient接口、配置负载均衡和实际应用示例。通过案例演示了如何利用Feign实现消费者服务对产品服务的调用,以及其在Spring Boot项目中的整合过程。

该栏目讲叙微服务概念、注册中心、负载均衡、配置中心、服务熔断、服务消费等知识


文章目录


简介

  • 简介:Feign 是一个轻量级的 HTTP 客户端,也是实现了 负载均衡 和 REST 调用的开源框架
  • 目的:简化 RestTemplate 代码,实现了 Ribbon 负载均衡,使代码更加简洁
  • 使用步骤
    • 消费者服务添加 Feign 依赖
    • 在业务层接口中添加 @FeignClient 注解,声明需要调用的服务
    • 在业务层接口的抽象方法中使用请求注解配置服务
    • 在启动类添加 @EnableFeignClients 注解激活 Feign

案例

  • 相关依赖
// 注入相关依赖
<dependencies>
    <!--eureka客户端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!--feign依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!--web依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--Pom依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>
  • 编写被调用服务的业务层接口
/**
 * 订单服务使用Feign组件调用产品服务
 */
@FeignClient("product-service")
public interface ProductService {

    @GetMapping("/product/getAllProducts")
    List<Product> getAllProducts();

}
  • 调用服务
/**
 * 使用Fegin调用微服务
 */
@Service
public class OrderServiceFeignImpl implements OrderService {

    @Autowired
    private ProductService productService;

    @Override
    public Order findOrderById(int orderId) {
        return new Order(orderId, "order001", 10000,
                productService.getAllProducts());
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值