SpringCloud http客户端Feign -- Feign替代RestTemplate
Posted CodeJiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud http客户端Feign -- Feign替代RestTemplate相关的知识,希望对你有一定的参考价值。
1. Feign替代RestTemplate
1.1 RestTemplate方式调用存在的问题
1.2 Feign的介绍
Feign是一个声明式的http客户端 官方地址,其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
1.3 定义和使用Feign客户端
1.3.1 引入feign客户端依赖-
<!--feign客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
1.3.2 在order-service的启动类添加注解开启Feign的功育
@EnableFeignClients
1.3.3 编写Feian客户端
package cn.itcast.order.clients;
import cn.itcast.order.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* ClassName: UserClient
* Description:
*
* @author Tianjiao
* @date 2022/2/23 22:43
*/
@FeignClient("user-service")
public interface UserClient
@GetMapping("/user/id")
User findById(@PathVariable("id") Long id);
1.3.4 用Feign客户端代替RestTemplate
package cn.itcast.order.service;
import cn.itcast.order.clients.UserClient;
import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class OrderService
@Autowired
private OrderMapper orderMapper;
@Autowired
UserClient userClient;
public Order queryOrderById(Long orderId)
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2. 使用Feign远程调用
User user = userClient.findById(order.getUserId());
// 3. 封装user信息
order.setUser(user);
// 4.返回
return order;
启动测试:
注意他们都在public的命名空间:
1.3.5 小结
1.4 说明: Feign里面默认集成了Ribbon(负载均衡)
以上是关于SpringCloud http客户端Feign -- Feign替代RestTemplate的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud http客户端Feign -- 自定义Feign的配置(一般情况下需要配置的是日志级别)Feign的配置优化