搭建微服务工程 【详细步骤】

在这里插入图片描述

一、准备阶段 🍉

本篇文章用到的技术栈

mysql+mybatis[mp]+springboot+springcloud alibaba

需要用到的数据库

订单数据库:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for shop_order
-- ----------------------------
DROP TABLE IF EXISTS `shop_order`;
CREATE TABLE `shop_order`  (`oid` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '订单id',`uid` int(0) NULL DEFAULT NULL COMMENT '用户id',`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名',`pid` bigint(0) NULL DEFAULT NULL COMMENT '商品id',`pname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品名称',`pprice` decimal(10, 2) NULL DEFAULT NULL COMMENT '商品价格',`number` int(0) NULL DEFAULT NULL COMMENT '购买数量',PRIMARY KEY (`oid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 44956 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of shop_order
-- ----------------------------SET FOREIGN_KEY_CHECKS = 1;

商品数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for shop_product
-- ----------------------------
DROP TABLE IF EXISTS `shop_product`;
CREATE TABLE `shop_product`  (`pid` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '商品id',`pname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品名',`pprice` decimal(10, 2) NULL DEFAULT NULL COMMENT '商品价格',`stock` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品库存',PRIMARY KEY (`pid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of shop_product
-- ----------------------------
INSERT INTO `shop_product` VALUES (1, '华为手机', 1999.00, '100');
INSERT INTO `shop_product` VALUES (2, 'vivo手机', 2999.00, '100');
INSERT INTO `shop_product` VALUES (3, '小米', 2222.00, '1000');SET FOREIGN_KEY_CHECKS = 1;

二、编码阶段🍉

1.搭建父工程🥝

在这里插入图片描述
根据自己的需要搭建父工程,我这里使用的是maven工程

引入依赖🍓

在这里插入图片描述

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>springcloud-pread</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>Archetype - springcloud-pread</name><url>http://maven.apache.org</url><modules><module>qy165-lzq</module><module>qy165-lzq01</module><module>qy165-lzq02</module></modules><!--继承springboot父工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version></parent><!--定义版本号--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF- 8</project.reporting.outputEncoding><spring-cloud.version>Hoxton.SR8</spring-cloud.version><spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version></properties><!--dependencyManagement: 它只负责jar的管理 不负责jar的下载 子类使用该类型的jar包时,直接引用而无需写版本--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

springboot 和 springcloud 以及springcloud alibaba他们的版本必须匹配

在这里插入图片描述

2. 创建公共模块🥝

在这里插入图片描述
公共模块中只需要创建两个实体类即可

引入依赖🍓

在这里插入图片描述

编写实体类🍓

在这里插入图片描述

package com.lzq;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.math.BigDecimal;@Data
@TableName(value = "shop_order")
public class Order {@TableId(type = IdType.AUTO)private Integer oid;private Integer uid;private String username;private Integer pid;private String pname;private BigDecimal pprice;private Integer number;
}

在这里插入图片描述

package com.lzq;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.math.BigDecimal;@Data
@TableName(value = "shop_product")
public class Product1 {@TableId(type = IdType.AUTO)private Integer pid;private String pname;private BigDecimal pprice;private String stock;
}

3.商品系统🥝

在这里插入图片描述

引入依赖🍓

在这里插入图片描述

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>springcloud-pread</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>qy165-lzq01</artifactId><name>Archetype - qy165-lzq01</name><url>http://maven.apache.org</url><dependencies><!--公共模块引入--><dependency><groupId>org.example</groupId><artifactId>qy165-lzq</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency></dependencies>
</project>

配置文件🍓

在这里插入图片描述

#端口号8001~8008
server.port=8001
#数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.password=123456
spring.datasource.username=root
spring.datasource.url=jdbc:mysql:///wf1?serverTimezone=Asia/Shanghai#sql日志打印控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#mybatis映射文件
mybatis-plus.mapper-locations=classpath:/mapper/*.xml

主启动类🍓

在这里插入图片描述

package com.lzq;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class lzq {public static void main(String[] args) {SpringApplication.run(lzq.class,args);}
}

dao层🍓

在这里插入图片描述

package com.lzq.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lzq.Product1;
import com.lzq.pojo.Product;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface ProductDao extends BaseMapper<Product1> {}

service层🍓

在这里插入图片描述
在这里插入图片描述

package com.lzq.service.impl;import com.lzq.Product1;
import com.lzq.dao.ProductDao;
import com.lzq.pojo.Product;
import com.lzq.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ProductServiceImpl implements ProductService {@Autowiredprivate ProductDao productDao;@Overridepublic Product1 findById(Integer id) {Product1 product = productDao.selectById(id);return product;}
}

controller层🍓

在这里插入图片描述

package com.lzq.controller;import com.lzq.Product1;
import com.lzq.pojo.Product;
import com.lzq.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.websocket.server.PathParam;@Controller
@ResponseBody
@RequestMapping("/aaa")
public class ProductController {@Autowiredprivate ProductService productService;//{id} 这种方式表示在路径上以/的方式传输参数@GetMapping("/bbb/{id}")public Product1 getByid(@PathVariable Integer id){//@PathVariable该注解用来接收{id}的参数Product1 byId = productService.findById(id);return byId;}}

4.订单系统🥝

在这里插入图片描述

引入依赖🍓

在这里插入图片描述

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>springcloud-pread</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>qy165-lzq02</artifactId><name>Archetype - qy165-lzq02</name><url>http://maven.apache.org</url><dependencies><!--公共模块引入--><dependency><groupId>org.example</groupId><artifactId>qy165-lzq</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency>
</dependencies>
</project>

配置文件🍓

在这里插入图片描述

#端口号9001~9008
server.port=9001
#数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.password=123456
spring.datasource.username=root
spring.datasource.url=jdbc:mysql:///wf2?serverTimezone=Asia/Shanghai#sql日志打印控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#mybatis映射文件
mybatis-plus.mapper-locations=classpath:/mapper/*.xml

主启动类🍓

在这里插入图片描述

package com.lzq;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
public class Qy165Lzq03Application {public static void main(String[] args) {SpringApplication.run(Qy165Lzq03Application.class, args);}@Beanpublic RestTemplate aaa(){RestTemplate restTemplate = new RestTemplate();return restTemplate;}}

dao接口🍓

在这里插入图片描述

package com.lzq.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lzq.Order;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface OrderDao extends BaseMapper<Order> {}

service层🍓

在这里插入图片描述

在这里插入图片描述

package com.lzq.service.impl;import com.lzq.Order;
import com.lzq.dao.OrderDao;
import com.lzq.service.OrderSercice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class OrderServiceImpl implements OrderSercice {@Autowiredprivate OrderDao orderDao;@Overridepublic Integer inset(Order order) {int insert = orderDao.insert(order);return insert;}
}

controller层🍓

在这里插入图片描述

package com.lzq.controller;import com.lzq.Order;
import com.lzq.Product1;
import com.lzq.service.OrderSercice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
@RequestMapping
public class OrderController {@Autowiredprivate OrderSercice orderSercice;@Autowiredprivate RestTemplate restTemplate;@GetMapping("/aaa")public String insert(int pid,int num){System.out.println(pid);//构建一个订单对象Order order=new Order();order.setUid(1);//未来登录后一定能获取当前用户信息。order.setUsername("赵志强");order.setNumber(num);//商品信息---调用商品微服务的接口。---如何调用商品微服务的接口?--远程调用。[1]借助rabbitmq  [2]http远程调用【在java端模拟浏览器调用】。//spring封装了http远程调用 RestTemplate.默认该类没有交于spring容器管理. 创建一个配置类 写一个方法@Bean注解/*** String url, 远程调用的服务器的地址* Class<T> responseType, 远程调用的接口返回类型的反射类* Object... uriVariables: 远程接口需要传递的参数。*/Product1 product = restTemplate.getForObject("http://localhost:8001/aaa/bbb/"+ pid, Product1.class);System.out.println(product);order.setPid(product.getPid());order.setPname(product.getPname());order.setPprice(product.getPprice());int i=orderSercice.inset(order);return i>0?"下单成功":"下单失败";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/23279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干货 | 一个漏洞利用工具仓库

0x00 Awesome-Exploit 一个漏洞证明/漏洞利用工具仓库 不定期更新 部分漏洞对应POC/EXP详情可参见以下仓库&#xff1a; https://github.com/Threekiii/Awesome-POC https://github.com/Threekiii/Vulhub-Reproduce 0x01 项目导航 ActiveMQ CVE-2015-5254 Apisix CVE-2…

stm32(独立看门狗和窗口看门狗)

独立看门狗介绍 什么是看门狗&#xff1f; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造 成程序的跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#xff0c;由单片机控制的系统无法继续工作…

用Python采用Modbus-Tcp的方式读取485电子水尺数据

README.TXT 2023/6/15 V1.0 实现了单个点位数据通信、数据解析、数据存储 2023/6/17 V2.0 实现了多个点位数据通信、数据解析、数据存储 2023/6/19 V2.1 完善log存储&#xff0c;仅保留近3天的log记录&#xff0c;避免不必要的存储&#xff1b;限制log大小&#xff0c;2MB。架…

第十一章:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS——通过膨胀卷积的多尺度上下文聚合

0.摘要 目前用于语义分割的先进模型是基于最初设计用于图像分类的卷积网络的改进。然而&#xff0c;像语义分割这样的密集预测问题在结构上与图像分类不同。在这项工作中&#xff0c;我们开发了一个专门为密集预测设计的新的卷积网络模块。所提出的模块使用膨胀卷积来系统地聚合…

神码融信金融SBG交付二部VP李先林受邀为第十二届中国PMO大会演讲嘉宾

神码融信金融SBG交付二部VP李先林先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;多项目管理的心得体会。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 在后疫情时代&#xff0c;金融科技…

直播商城系统源码的威力:开启直播购物新时代

随着科技的不断进步和人们对互动性购物体验的追求&#xff0c;直播购物正成为电商行业的热门趋势。直播商城系统源码的威力在这一潮流中愈发显现&#xff0c;为商家和消费者提供了无限的机会和便利。 下面是一个简单的示例&#xff0c;展示了如何利用直播商城系统源码创建一个…

LSTM对比Bi-LSTM的电力负荷时间序列预测(Matlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

如何有效利用chatgpt?

如何有效地使用ChatGPT&#xff1f; 代码、诗歌、歌曲和短篇小说都可以由 ChatGPT 以特定的风格编写。您所需要的只是正确的问题和适当的提示。以下是有关如何有效使用ChatGPT的一些提示和想法&#xff1a; 头脑 风暴获取初稿解决编码问题尝试不同的提示格式查找标题寻求帮助…

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群&#xff1f; 多台服务器做同一件事情。 集群扩展方式&#xff1a; scale up&#xf…

RabbitMQ 同样的操作一次成功一次失败

RabbitMQ 是一个功能强大的消息队列系统&#xff0c;广泛应用于分布式系统中。然而&#xff0c;我遇到这样的情况&#xff1a;执行同样的操作&#xff0c;一次成功&#xff0c;一次失败。在本篇博文中&#xff0c;我将探讨这个问题的原因&#xff0c;并提供解决方法。 我是在表…

收费站对讲广播系统方案

收费站对讲广播系统方案 收费站对讲广播系统是一种用于收费站内部通信和广播传输的系统。它能够实现不同收费站点之间的语音通信和广播&#xff0c;以便快速、准确地传达信息和指令。该系统通常由以下几个核心组件组成&#xff1a;1. 主控台&#xff1a;主控台是系统的中心控制…

DevOps(二)

CD 1. 平台选择2. 技术选型3. 阶段性目标4. 搭建示例4.1 环境准备(节点机)1. java版本升级2. 编译安装git3. docker安装4. docker-compose安装5. sonarqube安装6. harbor安装7. gitlab私服 4.2 示例一&#xff08;手动&#xff09;1. 创建项目2. 编码3. Dockerfile4. 拷贝pytho…