【SpringCloud】02 搭建springcloud微服务项目
创始人
2024-02-05 15:41:41

文章目录

  • 搭建springcloud微服务项目
    • 1. 微服务父工程
    • 2. 创建子模块-shop-common
    • 3. 创建子模块--shop-product
    • 4. 创建子模块--shop-order

搭建springcloud微服务项目

技术栈:

  1. springcloud-alibaba
  2. mybatis-plus 持久性框架
  3. mysql数据库5.7以上
  4. springboot来搭建每个微服务。

1. 微服务父工程

在这里插入图片描述
把其他的全删掉,只保留一个pom文件


4.0.0org.springframework.bootspring-boot-starter-parent2.3.12.RELEASE com.aaaqy156-shop-parent0.0.1-SNAPSHOTpomqy156-shop-parentDemo project for Spring Boot1.8UTF-8UTF- 8Hoxton.SR82.2.3.RELEASEorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportcom.alibaba.cloudspring-cloud-alibaba-dependencies${spring-cloud-alibaba.version}pomimportorg.springframework.bootspring-boot-maven-plugin

2. 创建子模块-shop-common

把其他模块公共得代码放入到该模块。- - -实体 工具类

在这里插入图片描述

  org.projectlomboklombokcom.baomidoumybatis-plus-boot-starter3.5.0

定义相关得实体类

@Data
@TableName(value = "shop_order")
public class Order {//订单id@TableIdprivate Long oid;//用户idprivate Integer uid;//用户名private String username;//商品id---购买时99---->活动结束后199private Long pid;//商品得名称private String pname;//商品得价格private Double pprice;//购买得数量private Integer number;
}@Data
@TableName("shop_product")
public class Product {@TableIdprivate Long pid;private String pname;private Double pprice;private Integer stock;
}

3. 创建子模块–shop-product

关于商品表操作的接口
在这里插入图片描述

	com.aaashop-common0.0.1-SNAPSHOTorg.springframework.bootspring-boot-starter-webmysqlmysql-connector-java

配置文件

# 定义端口号 [8001~8009 未来方便搭建集群]
server:port: 8001#数据源得信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghaiusername: rootpassword: root# mybatis打印日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

dao接口

/*** @program: qy156-shop-parent* @description:* @author: 闫克起* @create: 2022-11-17 16:22**/
public interface ProductDao extends BaseMapper {
}

service代码

@Service
public class ProductService implements IProductService {@Autowiredprivate ProductDao productDao;@Overridepublic Product findById(Long pid) {return productDao.selectById(pid);}
}

controller

@RestController
@RequestMapping("product")
public class ProductController {@Autowiredprivate IProductService productService;@GetMapping("/getById/{pid}")public Product getById(@PathVariable Long pid){return productService.findById(pid);}
}

主启动类

@SpringBootApplication
@MapperScan(basePackages = "com.aaa.product.dao")
public class ProductApp {public static void main(String[] args) {SpringApplication.run(ProductApp.class,args);}
}

在这里插入图片描述

4. 创建子模块–shop-order

关于订单表得所有操作接口
在这里插入图片描述

	com.aaashop-common0.0.1-SNAPSHOTorg.springframework.bootspring-boot-starter-webmysqlmysql-connector-java

配置

#端口号---[9001~9009]集群模式
server:port: 9001#数据源得信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springcloud?serverTimezone=Asia/Shanghaiusername: rootpassword: root
# sql显示在控制台
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

dao接口

package com.aaa.order.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;/*** @program: qy156-shop-parent* @description:* @author: 闫克起* @create: 2022-11-18 14:34**/
public interface OrderDao extends BaseMapper {}

service代码

@Service
public class OrderService implements IOrderService {@Autowiredprivate OrderDao orderDao;@Overridepublic int save(Order order) {return orderDao.insert(order);}
}

controller代码

package com.aaa.order.controller;import com.aaa.entity.Order;
import com.aaa.entity.Product;
import com.aaa.order.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;/*** @program: qy156-shop-parent* @description:* @author: 闫克起2* @create: 2022-11-17 16:33**/
@RestController
@RequestMapping("/order")
public class OrderController {//必须创建并交于spring容器管理。这样才能被注入到相应的类属性上@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate IOrderService orderService;@GetMapping("/saveOrder")public String saveOrder(Long pid,Integer num){Order order=new Order();//用户得信息可以从登录后获取--Session  redis  jwtorder.setUid(1);order.setUsername("张成");//为订单对象设置商品得信息order.setPid(pid);//需要远程调用商品微服务中的指定接口[注意:凡是关于商品的操作都有商品微服务来执行。]//远程调用的方式:第一种基于TCP协议的RPC远程调用   第二种基于http协议Restful风格的调用。//分布式架构:TCP协议的//微服务架构:http协议的。---在spring框架中封装了一个工具RestTemplate。 如果不是使用的spring框架。你需要自己封装HttpClient工具Product product = restTemplate.getForObject("http://localhost:8001/product/getById/"+pid, Product.class);order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(num);orderService.save(order);return "下单成功";}
}

相关内容

热门资讯

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