返回首页

《微服务开发与实战》学习笔记

你好:

首先感谢你使用这份笔记手册,本学习笔记是我在自学过程(网课视频在下方链接)中的随手笔记,可能出现遗漏,顺序错误或语法,单词等错误,你可以在自己的学习过程中对这份笔记更正即可。

说明: 本笔记为本人学习过程中随手写的笔记,为复习使用,笔记中可能存在遗漏或错误,具体请以官方文档和权威书籍为准!谢谢! 笔记中的一些图片等元素因路径配置问题,可能会发生丢失。 笔记中展示的知识点仅为部分内容,完整内容请查阅官方开发文档内容!

----笔记参考资料----

网课资料:黑马程序员SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)哔哩哔哩bilibili

MyBatis-Plus 🚀 为简化开发而生

课程说明 - 飞书云文档

 

引入介绍

单体架构与微服务架构

单体架构

一个工程对应一个归档包(war),这个war包 包含了该工程的所有功能。我们成为这种应用为单体应用,也就是我们常说的单体架构。具体描述: 就是在我们的一个war包种,聚集了各种功能以及资源,比如JSP,JS,CSS等。

img

单体架构的优缺点

 

微服务架构

image-20250527210035713

微服务架构是一个架构风格, 提倡

  1. 将一个单一应用程序开发为一组小型服务.

  2. 每个服务运行在自己的进程中

  3. 服务之间通过轻量级的通信机制(http rest api)

  4. 每个服务都能够独立的部署

  5. 每个服务甚至可以拥有自己的数据库

微服务以及微服务架构的是二个完全不同的概念。 微服务强调的是服务的大小和对外提供的单一功能,而微服务架构是指把 一个一个的微服务组合管理起来,对外提供一套完整的服务。

img

微服务的优缺点

微服务的适用场景

微服务架构适用于需要快速迭代、灵活扩展和高可用性的场景。比如:

 

两种架构对比

1. 架构

2. 部署

3. 扩展

4. 可维护性

5. 弹性

6. 可伸缩性

7. 开发

适合的场景

 

MybatisPlus

Relationship Between MyBatis and MyBatis-Plus

特性

 

快速入门

入门案例

改造基于mybatis编写的接口,改造为mybatisPlus 改造前代码:

 

  1. 引入mybatisPlus起步依赖: MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。 因此我们可以用MybatisPlus的starter代替Mybatis的starter:

  2. 定义Mapper: 自定义的Mapper继承MybatisPlus提供的BaseMapper接口:

  3. 调用接口方法,实现增删改查

    测试全部通过

    image-20250529175053736

 

常见注解

MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。如果实体类名自动转换后与数据库表字段不匹配,可以使用以下注解进行配置

MybatisPlus中比较常用的几个注解如下: @TableName:用来指定表名 @Tableld:用来指定表中的主键字段信息 @TableField:用来指定表中的普通字段信息

image-20250603210246314

image-20250603210254902

 

全部注解配置介绍: 注解配置 | MyBatis-Plus

 

常见配置

使用配置 | MyBatis-Plus

image-20250603211238648

 

MyBatisPlus使用的基本流程是什么?

  1. 引入起步依赖

  2. 自定义Mapper基础BaseMapper

  3. 在实体类上添加注解声明表信息

  4. 在application.yml中根据需要添加配置

 

 

核心功能

条件构造器

MyBatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求

image-20250603212407503

案例:基于QueryWrapper的查询

image-20250603212547023

需求:

  1. 查询出名字中带o的,存款大于等于1ooo元的人的id、username、info、balance字段

     

  2. 更新用户名为jack的用户的余额为2000

 

案例:基于UpdateWrapper的更新

需求:更新id为1,2,4的用户的余额,扣200

条件构造器的用法:

 

自定义SQL

我们可以利用MyBatisPlus的Wrapper来构建复杂的where条件,然后自己定义SQL语句中剩下的部分。

Mybatis-Plus(以下简称MBP)的初衷是为了简化开发,而不建议开发者自己写SQL语句的;但是有时客户需求比较复杂,仅使用MBP提供的Service,Mapper与Wrapper进行组合,难以实现可以需求; 这时我们就要用到自定义的SQL了。

自定义SQL使用步骤:

  1. 基于wrapper构建where条件

     

  2. 在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew

     

  3. 自定义SQL,并使用wrapper条件

     

 

需求:将id在指定范围的用户(例如1、2、4)的余额扣减指定值

 

 

Service接口

image-20250604121134286

Service接口的使用方法

持久层接口 | MyBatis-Plus

  1. 自定义Service接口继承IService接口

    image-20250604121756144

     

  2. 自定义Service实现类,实现自定义接口并继承Servicelmpl类

     

  3. 测试

 

案例:基于Restful风格实现下列接口

编号接口请求方式请求路径请求参数返回值
1新增用户POST/users用户表单实体N/A
2删除用户DELETE/users/{id}用户idN/A
3根据id查询用户GET/users/{id}用户id用户VO
4根据id批量查询GET/users用户id集合用户VO集合
5根据id扣减余额PUT/users/{id}/deduction/{money}用户id
扣减金额
N/A

引入依赖

swagger配置信息

 

  1. 新增用户(1-4开发简单业务逻辑)

     

  2. 删除用户

     

  3. 根据id查询用户

     

  4. 根据id批量查询

     

  5. 根据id扣减余额(开发复杂业务逻辑) Controller

    Service

    Mapper

    Mapper.XML

 

测试接口:http://localhost:8080/doc.html image-20250604191207312

image-20250604191225482

 

 

REST架构风格介绍:

REST(英文Representational State Transfer)是一种基于客户端和服务器的架构风格,用于构建可伸缩、可维护的Web服务。REST的核心思想是,将Web应用程序的功能作为资源来表示,使用统一的标识符(URI)来对这些资源进行操作,并通过HTTP协议(GET、POST、PUT、DELETE等)来定义对这些资源的操作。

例如,使用RESTful架构设计一个用户管理系统,可以使用以下URI和HTTP动词:

获取用户列表GET /users
获取单个用户信息GET /users/{id}
创建用户POST /users
更新用户信息PUT /users/{id}
删除用户DELETE /users/{id}

REST架构风格是一种轻量级的Web服务设计模式,它不依赖于XML、SOAP等协议和标准。REST使用简单的HTTP请求和响应来实现资源之间的交互,这使得REST服务在跨平台和跨语言的Web服务中广泛使用。

REST采用无状态的客户端-服务器模型,并使用缓存来减少网络延迟和带宽消耗。REST服务通常使用JSON或其它轻量级的数据格式来交换数据。

 

Lambda方法

案例1:IService的Lambda查询 需求:实现一个根据复杂条件查询用户的接口,查询条件如下:

代码实现

 

案例2:IService的Lambda更新

需求:改造根据id修改用户余额的接口,要求如下

  1. 完成对用户状态校验

  2. 完成对用户余额校验

  3. 如果扣减后余额为0,则将用户status修改为冻结状态(2)

代码实现

 

案例3:IService的批量新增

需求:批量插入10万条用户数据,并作出对比:

 

扩展功能

代码生成器

 

 

DB静态工具

 

 

 

 

插件功能

 

Docker

 

 

 

微服务

 

 

Elasticsearch

 

 

面试篇