SpringCloud之微服务远程调用RestTemplate

假设我们需要根据订单id查询订单的同时,把订单所属的用户信息一起返回。

在之前我们可能会在先查询订单信息,然后将根据用户订单中id查询用户,之后将查出来的用户封装到一个订单信息的resultMap中后进行返回订单信息。

在这里插入图片描述
而微服务的远程调用则不用那么繁琐,他可以通过一个请求路径url进行直接查询用户信息,这就代表我们在查询订单信息的时候,只需要访问一个user请求的url就可以查出来对应的用户信息,然后直接对订单信息中的用户信息进行赋值。

而这种调用的实现就需要依靠RestTemplate

Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现了对象与json的序列化和反序列化,非常方便。

就是这个样子的实现方式:

    public Order queryOrderById(Long orderId) {

        Order order = orderMapper.findById(orderId);

        String url = "http://127.0.0.1:8080/user/" + order.getUserId();

        User user = restTemplate.getForObject(url, User.class);

        order.setUser(user);

        return order;
    }

思考:

虽然这种方法实现了一个远程的调用,但是对于微服务来说,提供者和消费者可能有多种,对应的地址也有很多,那么我们怎么能实现一个动态修改url呢

  1. 服务消费者该如何获取服务提供者的地址信息?
  2. 如果有多个服务提供者,消费者该如何选择?
  3. 消费者如何得知服务提供者的健康状态?

在之前写过一个dubbo架构的博客,其中介绍了注册中心,去实现一个远程调用。
同样springcloud也引入了一个注册中心去实现一个远程调用,常用的有eureka和nacos,在下一篇博客会讲到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值