SpringCloud微服务项目实战(一)---搭建SpringBoot项目

news2024/12/24 11:42:39

目录

    • SpringBoot与SpringCloud的关系
    • 环境配置
    • 开始搭建SpringBoot项目
    • 问题总结

SpringBoot与SpringCloud的关系

  1. Spring Boot主内,能够快速搭建,快速开发单个微服务,搞定了数据层访问、RESTful 接口、日志组件、内置容器等等基础功能
  2. Spring Cloud主外,轻松实现服务注册与发现、负载均衡、熔断降级、配置管理等
  3. Spring Boot是SpringCloud的基础,两者分工合作、合二为一,构建了微服务领域的全家桶解决方案

环境配置

  1. 安装java,推荐使用 JDK8 最新小版本或者 OpenJDK16 的最新小版本
  2. 安装maven,推荐使用 Maven 3.6 或以上的版本
  3. 下载IntelliJ IDEA
  4. 在IntelliJ IDEA 中安装 Lombok(File-Settings-Plugins-搜索Lombok)
  5. 安装MySQL数据库,MySQL官网
  6. 下载DB可视化工具DataGrip(navicat、workbench亦可),DataGrip官网,DataGrip使用教程
  7. 安装Rabbit MQ,RabbitMQ官网,RabbitMQ安装使用教程, 解决ERROR: distribution port 25672 in use by another node: rabbit@
  8. 安装Redis,Redis安装教程

开始搭建SpringBoot项目

先看一下整体效果和模块
在这里插入图片描述
做个解释,分了三个模块:
① coupon_template_serv 优惠券模板服务,用来创建、查找优惠券
② coupon_calculation_serv 优惠计算服务,根据用户的商品和优惠券来计算订单优惠后的金额
③ coupon_customer_serv 用户拂去,用来领券、下单,也是对用户开放的接口,依赖前两个服务来完成

这里详细记录一下coupon_template_serv这个模块的搭建过程,其他两个类似

1. 新建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将新建后多余的文件全部删除,只剩下这三个即可
在这里插入图片描述

2. 新建Module
方法与步骤一相同,新建后同样将多余的删除,因为还要建子模块,所以父模块下除了xxx.iml和xxx.pom也都删掉。
在coupon-template-serv下建3个子模块分别是api(存放公共 POJO 类或者对外接口)、dao(存放数据库实体类和 Dao 层)、impl(核心业务逻辑的实现层,对外提供 REST API),如下图
在这里插入图片描述

  1. 添加maven依赖
    从上到下,先修改最外层的项目的pom.xml
	<!--指定父级依赖 spring-boot-starter-parent 里定义的 Spring Boot 组件版本信息就会被自动带到子模块中   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
    </parent>


    <!--maven 的打包类型有三种:jar、war 和 pom。当我们指定 packaging 类型为 pom 时,意味着当前模块是一个“boss”-->
    <packaging>pom</packaging>
    
    <!-- 指定子模块   -->
    <modules>
        <module>coupon-template-serv</module>
        <module>coupon-calculation-serv</module>
        <module>coupon-customer-serv</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--省略部分依赖项 -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
`

再依次修改coupon-template-serv,template-api,template-dao,template-impl的依赖项,其中需要指定各自的parent和子模块

  1. 依次搭建子模块
    template-api,template-dao,template-impl,代码参考

  2. 创建启动类
    在这里插入图片描述

  3. 创建配置文件 application.yml
    它位于 src/main/resources 文件夹下。需要指定端口号、数据源等等配置

  4. 启动项目
    运行Application,控制台可查看启动日志

  5. 调用接口
    postman中访问 localhost:端口号/url,即可通过controlle层r寻址-service层处理-dao层访问数据库简单完成整个闭环

问题总结

  1. 问题:新建子模块后,pom文件的图标是xml文件标识,而不是m标识,而且目录结构是com-xxx-xxx这样一层一层的,而不是package包名一起的
    解决:idea工作台左侧右键pom文件,点击Add As Maven Project,如下图
    在这里插入图片描述

  2. 问题:删除子模块后,再新增同样名称的子模块,pom文件不生效且出现了删除线。
    解决:File–Settings–Build–Maven–IgnoredFiles中将对勾取消,如下图
    在这里插入图片描述

  3. 问题:子模块下再加子模块后,没有出现新的模块名,且目录层级乱了,把上级模块的pom也覆盖了。
    解决:添加Module选择的是Spring Initializr类型时,再最后一步存储位置设置中的Content root和Module_file location要加上子模块名称,如下图(也有人说添加module时选择maven类型,但这样的话在src-java下就没有默认Application类创建了)
    在这里插入图片描述

  4. 问题:@Table(name = “coupon_template”)中提示Cannot resolve table ‘coupon_template’
    解决:Idea连接数据库,并在报错处指定数据源
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 问题:Nacicat连接本地数据库,出现1251错误client does not support authentication protocol requested by server
    解决:参考这里

  6. 问题:SpringBoot项目启动成功,但使用postman调接口时报404
    分析:找不到路径,controller未生效。
    解决:将com.local.coupon.template.templateimpl改为com.local.coupon.template。SpringBoot会扫描到com.local.coupon.template包及其子包下面的内容,扫描路径也无需指定(即可以去掉@ComponentScan注解)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shardingsphere-proxy 实现mysql单库分表

1、docker安装mysql5.7版本 拉取mysql的镜像 docker pull mysql:5.7创建mysql的配置目录&#xff0c;日志目录&#xff0c;数据存储的目录 mkdir -p /home/sunyuhua/docker/mysql/conf mkdir -p /home/sunyuhua/docker/mysql/logs mkdir -p /home/sunyuhua/docker/mysql/dat…

微信小游戏:超大数值计算

测试代码&#xff1a; import {large_number} from "./large_number";const {ccclass, property} cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Label)label: cc.Label null;propertytext: string hello;// LIFE-CYCL…

操作符重载的概念

下面的复数解决方案是否可行&#xff1f; Add 函数可以解决 Complex 对象相加的问题&#xff0c;但是 Complex 是现实世界中确实存在的复数&#xff0c;并且复数在数学中的地位和普通的实数相同 为什么不能让 操作符也支持复数相加呢&#xff1f; 操作符重载 C 中的重载能够…

四、OkHttp_连接池

预备知识 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手&#xff0c;然后传输数据&#xff0c;然后再释放连接。 大量的连接每次连接关闭都要三次握手四次分手的很显然会造成性能低下&#xff0c; 因此http有一种叫做keep-alive connections的机制&#xff08;HTTP1…

【每日一题】Leetcode - 10. 正则表达式匹配

题目 Leetcode - 10. 正则表达式匹配 解题思路 预处理正则表达式&#xff0c;合并同项&#xff0c;比如: "a * b * c * . * " -> " . * "更加预处理后的正则表达式&#xff0c;构建NFA通过NFA状态转移条件一个一个匹配字符串字符不匹配的状态要回退匹…

【统一安全管控平台】4A解析

文章目录 一、统一帐号&#xff08;Account&#xff09;二、统一认证(Authentication)三、统一授权(Authorization)四、统一审计(Audit)参考&感谢 4A是指帐号&#xff08;Account&#xff09;、认证&#xff08;Authentication&#xff09;、授权&#xff08;Authorization…

mysql8.0新特性详解

一、my.ini或my.cnf的全局参数 一个连接最少占用内存是256K&#xff0c;最大是64M&#xff0c;如果一个连接的请求数据超过64MB&#xff08;比如排序&#xff09;&#xff0c;就会申请临时空间&#xff0c;放到硬盘上。 #最大连接数 max_connections3000 #最大用户连接数 max_…

智能饮品机器人的市场现状与前景未来,点赋科技与您共同期待

引言&#xff1a; 近年来&#xff0c;智能饮品机器人行业迅猛发展&#xff0c;成为引人瞩目的新兴市场。然而&#xff0c;这个行业的市场现状到底如何&#xff1f;它的前景又将如何发展&#xff1f;让点赋科技带大家一起来看看。 市场现状&#xff1a; 智能饮品机器人市场在过去…

解锁高效部署!快速搭建Kubernetes集群,提升团队生产力!

1 MacOS 1.1 下载 docker-desktop 从 docker 下载 docker-desktop (opens new window)&#xff0c;并完成安装 1.2 启用 k8s 集群 启动 docker-desktop&#xff0c;打开preference 面板 切换到 Kubernetes 标签页&#xff0c;并勾选启动 Enable Kubernetes&#xff0c;点击…

nginx 入门 (b站IT楠老师学习笔记)

文章目录 Nginx 入门 &#xff08;b站IT楠老师学习笔记&#xff09;一 基础了解1、下载nginx安装包2. nginx 可以提供的服务3. nginx 的优点4. 应用场景 二 实战2.1 基础检查以及配置文件结构了解2.2 main全局配置2.3 events模块2.4 http服务器配置2.5虚拟主机配置详解2.5.1 ht…

el-pagination分页查询封装

需求&#xff1a;因为需要用到表单查询的地方太多了&#xff0c;所以为了避免每个页面都写分页组件&#xff0c;直接封装好调用就完事了&#xff0c;简简单单 1.创建Pigination.vue公用组件 <template><div :class"{hidden:hidden}" class"paginatio…

AD中修改一个元器件的所有焊盘大小

1.首先&#xff0c;选中其中一个焊盘。 2.查找相似对象 3.修改component为same 4.修改X size和Y size为same 5.确定 6.修改Pad Stack中的x/y 注&#xff1a;component可以不用改为same&#xff0c;用any就是查找和这个焊盘大小类似的对象。

力扣1768.交替合并字符串(java模拟法)

题目描述&#xff1a; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 问题分析&#xff1a; 我们可以直…

servlet 监听器

做法: 在web.xml中: 或

矩形中的正方形:探究力扣最大正方形问题的奥秘

本篇博客会讲解力扣“1725. 可以形成最大正方形的矩形数目”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;对于每一个矩形&#xff0c;切分出来的最大正方形的边长是矩形的长和宽的较小值。我们需要维护最大的正方形边长&#xff0c;并统计数目。 我们可以写…

Verilog基础之十、计数器实现

目录 一、前言 二、工程设计 2.1 设计代码 2.2 综合结果 ​2.3 仿真结果 一、前言 计数器是较为基础的逻辑&#xff0c;很多其他逻辑可依靠计数器实现&#xff0c;如控制器&#xff0c;分频。原理为通过统计时钟脉冲的个数来输出计数值。 二、工程设计 2.1 设计代码 工…

实验 09 线性回归与波士顿房价预测

文章目录 实验 09 线性回归与波士顿房价预测一、实验目的二、实验设备三、实验内容3.1 了解数据3.2 分析数据3.3 建立模型&#xff08;一&#xff09;使用一个变量进行预测&#xff08;二&#xff09;使用多元线性回归分析进行预测 实验 09 线性回归与波士顿房价预测 一、实验…

Dubbo【Dubbo实战(整合Mybaits-plus配置、接口、集成Thymeleaf) 】(五)-全面详解(学习总结---从入门到深化)

目录 ​编辑 Dubbo实战_整合Mybaits-plus配置 Dubbo实战_创建添加用户接口 Dubbo实战_查询用户业务接口 Dubbo实战_更新用户业务接口 Dubbo实战_删除用户业务接口 Dubbo实战_集成Thymeleaf Dubbo实战_用户添加业务消费者实现 Dubbo实战_用户查询业务消费者实现 Dubbo实战_…

R带参数运行

rm(listls()) suppressPackageStartupMessages({library(getopt) })# getopt(),是getopt包的函数&#xff0c;需要先按照getopt包 # # getopt(spec NULL, opt commandArgs(TRUE),command get_Rscript_filename(), usage FALSE,debug FALSE) # # spec&#xff1a;一个4或…

linux suse12 安装mysql

1.下载mysql https://dev.mysql.com/downloads/mysql/ 2.选中mysql版本 对选中的版本进行下载 也可以在linux服务器上直接下载&#xff1a;wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 3.把下载好的文件放到/usr/local…