简单实现Springcloud跨项目相互调用
创始人
2024-02-15 02:58:33

目录

一、前置准备

二、项目准备

三、实现跨项目调用


一、前置准备

我们本次是使用的电商项目中的商品、订单、用户为案例进行讲解。

 技术选型

maven:3.5.4
数据库:MySQL 5.7
持久层: SpingData Jpa/Mybatis-plus
其他: SpringCloud Alibaba 技术栈

模块设计

springcloud-shop父工程
shop-common 公共模块【实体类】
shop-user 用户微服务 【端口: 8070】
shop-product 商品微服务 【端口: 8080】
shop-order 订单微服务 【端口: 8090】

二、项目准备

接下来我们做实现微服务的项目准备环节:

1、创建父工程 

父工程是maven项目

 创建完成过后更改maven地址!!!

 2、导入pom依赖


4.0.0com.zqspringcloud-shop1.0-SNAPSHOTpom1.8UTF-8UTF-82.3.2.RELEASEHoxton.SR92.2.6.RELEASEorg.springframework.bootspring-boot-dependencies${spring-boot.version}pomimport

在这里我们需要注意的一点事Springcloud与Springboot的版本问题:

这里给出对应的版本对应关系表:

3、创建基础模块

基础模块也是Maven项目所以步骤和上面创建父工程一样

 4、导入基础模块的pom依赖


springcloud-shopcom.zq1.0-SNAPSHOT4.0.0shop-commonorg.springframework.bootspring-boot-starter-data-jpaorg.projectlomboklombokcom.alibabafastjson1.2.56mysqlmysql-connector-java5.1.44

在这里区别创建Maven和Springboot项目,我们创建Maven项目,在父工程的pom.xml中会自动的产生子模块的标记:而springboot项目需要自己手动添加 

5、创建实体类放于基础模块

这里小编就是放入的三个实体类

 6、创建用户微服务

导入用户服务的Pom依赖


springcloud-shopcom.zq1.0-SNAPSHOT4.0.0shop-userorg.springframework.bootspring-boot-starter-webcom.zqshop-common1.0-SNAPSHOT

7、创建商品微服务

导入商品微服务的pom依赖


springcloud-shopcom.zq1.0-SNAPSHOT4.0.0shop-productorg.springframework.bootspring-boot-starter-webcom.zqshop-common1.0-SNAPSHOT

8、创建订单微服务

导入订单的Pom依赖


springcloud-shopcom.zq1.0-SNAPSHOT4.0.0shop-orderorg.springframework.bootspring-boot-starter-webcom.zqshop-common1.0-SNAPSHOT

9、修改三个微服务的访问端口

到这里我们的准备OK了,接下来就是代码实现微服务的相互调用了。

三、实现跨项目调用编码

3.1用户微服务Controller代码编写

package com.zq.shopuser.controller;import com.zq.entity.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author张强* @site www.zq.com* @create  2022-11-25 15:26*/
@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/get/{id}")public User get(@PathVariable("id") Integer id){
//        查询数据库return new User(id,"zq","123456","15679031652");}
}

3.2商品微服务Controller代码编写

package com.zq.shopproduct.controller;import com.zq.entity.Product;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author张强* @site www.zq.com* @create  2022-11-25 15:31*/
@RestController
@RequestMapping("/product")
public class ProductController {@RequestMapping("/get/{pid}")public Product get(@PathVariable("pid") Integer pid){Product p = new Product(pid, "香荷泥煎面", 36d, 36);return p;}
}

3.3订单微服务Controller代码编写

package com.zq.shoporder.controller;import com.zq.entity.Order;
import com.zq.entity.Product;
import com.zq.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;/*** @author张强* @site www.zq.com* @create  2022-11-25 15:35*/
@RequestMapping("/order")
@RestController
public class OrderController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping("/get/{uid}/{pid}")public Order get(@PathVariable("uid") Integer uid,@PathVariable("pid") Integer pid){User user = restTemplate.getForObject("http://localhost:8070/user/get/" + uid, User.class);Product product = restTemplate.getForObject("http://localhost:8090/product/get/" + pid, Product.class);Order order = new Order();order.setNumber(2);order.setOid(System.currentTimeMillis());order.setPid(pid);order.setPname(product.getPname());order.setPprice(product.getPprice() * order.getNumber());order.setUid(user.getUid());order.setUsername(user.getUsername());return order;}
}

测试结果:

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...