RestTemplate微服務項目
前言
因為要運用 Spring Cloud Alibaba 開源組件到分布式項目中,所以這里先搭建一個不通過 Spring Cloud只通過 RestTemplate
來讓SpringBoot和Mybatis進行模塊之間
通訊,之后會在此基礎上再添加Spring Cloud Alibaba框架及各個組件。
一、項目整體概述
這里整理了一張圖,代表接下來這個項目的模塊划分,同時用到的一些組件

從這幅圖可以看出整個項目所需要用到的組件有:
GateWay(網關),
Feign(服務調用),
Nacos(注冊中心+配置中心),
Zipkin(鏈路追蹤組件),
Sentinel(流量控制組件)
一共創建了三個服務
商品微服務
訂單微服務
用戶微服務
這篇博客的目的就是搭建上面三個服務,而不添加任何微服務的組件。
二、項目環境和數據庫設計
上面已經說過,一共有三個微服務(商品微服務,訂單微服務,用戶微服務),所以這里也一共有三個數據庫。
1、商品微服務
1).創建商品微服務的數據庫
CREATE DATABASE mall_goods
2).創建商品表
CREATE TABLE `goods` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`goods_name` varchar(524) DEFAULT NULL COMMENT '商品名稱',
`price` int DEFAULT NULL COMMENT '商品價格(分)',
`goods_img` varchar(524) DEFAULT NULL COMMENT '商品封⾯圖',
`summary` varchar(1026) DEFAULT NULL COMMENT '概述',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3).表里插入幾條模擬商品數據
INSERT INTO `goods` (`id`, `goods_name`, `price`, `goods_img`, `summary`, `create_time`)
VALUES
(1,'男士純棉短袖T恤',1800,'www.txun.com','很休閑的一款T恤','2021-04-03 11:48:46'),
(2,'2021秋季風衣女裝',7200,'www.fy.com','很好的一件風衣','2021-04-03 11:48:46'),
(3,'2021春裝新款簡約顯瘦圓領連衣裙',3600,'www.lyq.com','很好一件連衣裙','2021-04-03 11:48:46');
2、訂單微服務
1).創建訂單微服務的數據庫
CREATE DATABASE mall_orders
2).創建訂單表
CREATE TABLE `goods_order` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`order_no` varchar(64) DEFAULT NULL COMMENT '訂單號',
`total_fee` int DEFAULT NULL COMMENT '⽀付⾦額,單位分',
`goods_id` int DEFAULT NULL COMMENT '商品ID',
`goods_title` varchar(256) DEFAULT NULL COMMENT '商品標題',
`goods_img` varchar(256) DEFAULT NULL COMMENT '商品圖⽚',
`user_id` int DEFAULT NULL COMMENT '⽤戶id',
`state` int DEFAULT NULL COMMENT '0表示未⽀付,1表示已⽀付',
`create_time` datetime DEFAULT NULL COMMENT '訂單⽣成時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3).表里插入幾條模擬訂單數據
INSERT INTO `goods_order` (`id`, `order_no`, `total_fee`, `goods_id`, `goods_title`, `goods_img`, `user_id`, `state`, `create_time`)
VALUES
(1,'2021033000001-1',1800,1,'男士純棉短袖T恤','www.txun.com',1,1,'2021-04-03 11:48:46'),
(2,'2021033000001-2',7200,2,'2021秋季風衣女裝','www.fy.com',2,1,'2021-04-03 11:48:46');
3、用戶微服務
1).創建用戶微服務的數據庫
CREATE DATABASE mall_user
2).創建用戶表
CREATE TABLE `user` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`phone` varchar(32) DEFAULT NULL COMMENT '手機號',
`pwd` varchar(128) DEFAULT NULL COMMENT '密碼',
`sex` int(2) DEFAULT NULL COMMENT '性別',
`img` varchar(128) DEFAULT NULL COMMENT '頭像',
`username` varchar(128) DEFAULT NULL COMMENT '用戶名',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
PRIMARY KEY (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARSET = utf8mb4;
3).表里插入幾條用戶數據
INSERT INTO `user` (`id`, `phone`, `pwd`, `sex`, `img`, `username`, `create_time`)
VALUES
(1,'18812345678','123456',1,'www.touxiang.com','小小','2021-04-03 11:48:46'),
(2,'18887654321','654321',2,'www.touxiang.com','張三','2021-04-03 11:48:46');
三、項目搭建
1、技術架構
項目總體技術選型
SpringBoot2.3.3 + Maven3.5.4 +JDK8
2、項目整體結構
mall-parent #父工程
|
---mall-common #公共模塊
|
---mall-goods #商品服務(端口:6001)
|
---mall-order #訂單服務(端口:7001)
|
---mall-user #用戶服務(端口:8001)
說明
有關項目具體的代碼我這邊就不放上去了,文章最下面會附上GitHub地址。
四、測試
這里主要測試兩點
1)各模塊連接數據庫是否成功
2)訂單服務調商品服務接口能否成功
1、訂單接口代碼
@RestController
@RequestMapping("api/v1/goods_order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("getGoods")
public Object getGoods(int goodsId) {
Goods goods = restTemplate.getForObject("http://localhost:6001/api/v1/goods/findByGoodsId?goodsId=" + goodsId, Goods.class);
return goods;
}
}
2、測試
通過postMan測試

通過圖片可以說明
1)商品服務連接數據庫成功
2)訂單服務調商品服務成功
說明
這只是一個學習的項目,所以比較簡單,下面就是一步一步添加spring cloud alibaba 框架及相應組件。
github地址
:RestTemplateStudy
少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(3)