首页 > 其他分享 >微服务框架SpringCloud-2-服务拆分及远程调用-2.2服务远程调用

微服务框架SpringCloud-2-服务拆分及远程调用-2.2服务远程调用

时间:2023-05-24 15:36:09浏览次数:46  
标签:调用 服务 RestTemplate order 2.2 import 远程

微服务框架 SpringCloud

2 服务拆分及远程调用

2.2 服务远程调用

2.2.1 根据订单id查询订单功能

需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回

现在是不能做到的,

 可以看到现在user 是个 null 【所以没有达到需求】

现在的情况是下面的样子

 

 但是需求想要的是下面的样子

 即在查询订单的同时,把用户信息也返回

所以现在必须得修改订单模块的内容了

 这就要涉及到服务远程调用了

2.2.2 远程调用方式分析

 现在的user 服务对外暴露了一个get 请求接口

 现在在浏览器直接请求接口,就可以得到对应id 的user 信息

如果我的订单模块也可以像浏览器一样发起一个http 请求,

 这样用户模块也应该返回对应的用户信息

这样订单模块再对两部分信息进行整合

 即如何在Java 代码中发起http 请求

2.2.3 实现

① 注册RestTemplate

在order-service的OrderApplication中注册RestTemplate

package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    //创建RestTemplate并注入Spring容器
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

② 服务远程调用RestTemplate

修改order-service中的OrderService的queryOrderById方法

package cn.itcast.order.service;

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
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2. 利用RestTemplate发起HTTP请求查询用户
        //2.1 URL路径
        String url = "http://localhost:8081/user/" + order.getUserId();
        //2.2 发送HTTP请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        //3. 封装user到order
        order.setUser(user);
        // 4.返回
        return order;
    }
}

OK,重启服务

 进行测试

 妙啊,这样就都出来了【虽然实现的方式有点…】

试下另外的

 没问题没问题

2.2.4 实现

  1. 微服务调用方式
    • 基于RestTemplate发起的http请求实现远程调用
    • http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。

 

标签:调用,服务,RestTemplate,order,2.2,import,远程
From: https://www.cnblogs.com/yayuya/p/17427284.html

相关文章

  • 微服务架构基本原理学习笔记(一)
    一、什么是微服务微服务是一种技术架构,通常我们可以把它理解为一组可以相互之间协同工作的应用程序或服务,这些应用程序或服务能够被单独部署到不同的服务器中,并且能够自主运行和维护。微服务技术只是一个名称而已,或许我们在日常工作中已经或多或少在使用其中的一种或几......
  • 【JavaWeb-02】Web服务器
    文章目录2.web服务器2.1技术讲解2.2web服务器2.web服务器2.1技术讲解JSP/Servlet:B/S:浏览和服务器C/S:客户端和服务端sun公司主推的B/S架构基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)可以承载三高问题带来的影响2.2web服务器IIS:微软的Tmocat:Java初学人员......
  • 把DNS请求日志转发到syslog服务器去
    把DNS请求日志转发到syslog服务器去在vim/etc/named.conf里配置的内容logging{channeldefault_debug{file"data/named.run";severitydynamic;};channelsyslog_channel{syslogDNS-LOG;......
  • Linux(centos7.9)搭建TACACS+服务器
    一、TACACS+是什么TACACS+(TerminalAccessControllerAccessControlSystem),终端访问控制器控制系统协议,与Radius协议相近,为网络设备和访问服务器提供身份验证,授权和计费服务。 TACACS+和RADIUS的比较更多细节,自行查看 https://www.h3c.com/cn/d_201309/922099_300......
  • 基于SpringBoot开发一个Restful服务,实现增删改查功能
    前言在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便、快捷。但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练。不过在看了很多关于SpringBoot的介绍之后,并没有想象中的那么难,于是开始准备学习SpringBoot。在闲暇......
  • 【技术】多端能力服务统一是一种关键的技术和架构
    ​多端能力服务统一是一种关键的技术和服务架构,旨在为不同终端设备提供一致的用户体验和功能。通过采用前端和后端技术的组合,如响应式Web设计、PWA、跨平台移动应用开发框架、RESTfulAPI、GraphQL、WebSocket、Serverless架构和微服务架构,可以实现多端能力服务统一的目标。......
  • 提交项目到git远程仓库
    提交项目到github远程仓库点击VCS--》ShareprojectonGithub相关信息配置:修改完,点击share点击add等待完成。打开浏览器查看,可以发现我们的仓库里出现了刚刚提交的项目。等我们对IDEA项目进行了修改,新增文件等操作时,可以看到修改地方的蓝色提示,绿色则是新增。......
  • Centos7安装高版本BIND9.16.41(DNS服务器)
    安装高版本BIND9.16.41或9.18.15双数版本为稳定版如9.16、9.18找到BIND官网:https://www.isc.org/download/#BIND1、点击Download:这里以9.16.41版本为例2、打开CentOS系统3、跳转到官方文档,找到EPEL源,复制链接更换源,并安装cd/etc/yum.repos.drm-rf/etc/yum.repos.......
  • Qt+QtWebApp开发笔记(三):http服务器动态html连接跳转基础交互
    前言  网页很多时候是动态的,于是本篇文章目标实现一个简答的动态页面—页静态页面互相跳转,点击可以跳转到子页面。 Demo  下载地址  链接:https://pan.baidu.com/s/1bbhcu1XTiaJRYGRQRG5a0g?pwd=1234 HTML基本页面交换  上一篇的“HelloWorld”......
  • 企业研发效能度量利器,华为云发布CodeArts Board看板服务
    摘要:华为云CodeArtsBoard正式上线,欢迎体验。本文分享自华为云社区《企业研发效能度量利器,华为云发布CodeArtsBoard看板服务》,作者:华为云头条。数字化时代,提升研发效能以加快价值交付已经成为企业的核心目标和竞争力。而组织效能的提升离不开高效精准的度量,同时科学的研发效能......