【OpenFeign】服务调用组件的基本使用

OpenFeign 是一个声明式的 Web 服务客户端,可以帮助我们更加方便地调用 RESTful API。它通过简单的注解配置,可以让我们像调用本地方法一样调用远程服务,非常适合微服务架构下的应用。它让微服务之间的调⽤变得更简单, 类似controller 调⽤service, 只需要创建⼀个接⼝,然后添加注解即可使⽤OpenFeign.

OpenFeign官方文档:https://github.com/OpenFeign/feign

1. 引入依赖

在订单服务下添加依赖:

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

2. 添加注解

在 订单服务(客户端)的Spring Boot 应用程序的启动类上添加 @EnableFeignClients 注解,以启用 Feign

3. 定义Feign客户端

通过接口和注解定义远程调用的方法,在订单服务下创建一个接口类,来完成和商品服务中的接口“对接”。

import com.guan.product.model.ProductInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(value = "product-service")
public interface ProductApi {

    @RequestMapping("/product/{productId}")
    ProductInfo getProductInfo(@PathVariable("productId") Integer productId);
}

 

4. 使用Feign客户端

在应用中,你可以直接注入并使用 Feign 客户端,就像调用本地接口一样丝滑。


@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private ProductApi productApi;

    public OrderInfo selectOrderByID(Integer orderID){
        OrderInfo orderInfo = orderMapper.selectOrderById(orderID);

        ProductInfo productInfo = productApi.getProductInfo(orderInfo.getProductId());
        orderInfo.setProductInfo(productInfo);
        return orderInfo;
    }
}

访问:http://127.0.0.1:8080/order/1

订单信息中成功查询到商品的详细信息。

5. 总结

使用openFeign,首先需要引入所需要的依赖(spring-cloud-starter-openfeign);然后在启动类上添加@EnableFeignClients注解;接着在客户端定义接口类(Feign客户端),接口和服务端的提供的服务接口相对应;最后就可以使用Feign,注入客户端后就可以像调用本地方法一样调用远程服务的接口了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小小小关同学

你的支持就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值