# SpringBoot3-PN
**Repository Path**: gitben123/SpringBoot3-PN
## Basic Information
- **Project Name**: SpringBoot3-PN
- **Description**: 基于老杜的SpringBoot3视频搭建的学习项目
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-10
- **Last Updated**: 2025-10-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ssm
### 介绍
这个项目以老杜的ssm视频为基础,多加了很多功能,
导入该项目后需要在启动类SsmApplication同级目录下,找到
SqlRunnerMain类,配置好所用数据库信息后,直接运行main
方法生成表结构。项目中加入大量日志方便调试,切换环境到
prod可以减少部分日志打印。
### 准备工作
尽量安装以下软件:ftp、prometheus和Grafana、erlang和RabbitMq(必须)、redis和rdm,
下面提供windows版百度网盘链接:
https://pan.baidu.com/s/1sz517TO_McBx9AuG18n8qw?pwd=2u5c 提取码: 2u5c
如果图片显示不了,需要去安装IDEA的一个插件markdown editor,然后点击底部,从
markdown split editor选项切换到markdown editor即可
### 怎么启动
1. 确保mysql服务已经启动且可以访问数据库
2. 找到 SqlRunnerMain类,配置好url和账号密码,直接运行main方法

3. 找到application-dev.yml文件,配置好url和账号密码

4. 运行启动类SsmApplication

5. (可选)安装windows版redis且启动redis服务,否则会采用降级登录方式
### 导入apifox
找到根目录下apifoxJson文件夹下面的test.apifox.json文件,
导入到apifox或postman中,用来模拟前端发送请求
### 功能简介
#### 登录
登录时生成AES加密后的token,除了登录接口和其他一些特殊接口外,发请求时
请求头必须要携带token,以便后端进行校验

#### 发起其他请求


#### 模仿Mybatisplus的自动代码生成类
找到GenMySqlCode,配置好信息可自动生成代码,生成通用增删改查、导入和导出(基于easyexcel)
接口

#### 自实现表测试数据生成工具类
找到PureJdbcTestDataGenerator,
配套的词库配置在resources 目录下的lexicon_config.properties,
main方法入口出配置好需要生成测试数据的表名和测试数据条数,可配置多个。
首次运行会在项目根目录下生成 表名_config.txt配置文件,根据详细说明理解清楚
各项配置后,根据需要调整配置信息,再次运行main方法即可




#### 自实现表定时备份DDL及其数据类
在task目录下找到TableExportScheduledTask定时任务类,配置文件中
```yaml
export:
backupSQL: D:/sql_exports
backupSQLMaxRows: -1 # 每个表导出的数据条数,-1 表示导出全部,>0 表示导出指定条数,默认 100
rowsPerFile: 1000
paginationType: new # 或 old sql备份分页类型
```
#### 引入swagger2
项目启动后浏览器输入 http://localhost:8080/swagger-ui.html#/
即可查看接口api文档

#### 引入springboot集成javaMail依赖
详情见application.yml的mail部分配置,username为qq邮箱发件人的邮箱账号,password为授权码
##### 授权码获取步骤:
1. 登录 QQ 邮箱网页版
2. 点击页面右上角 【设置】
3. 进入 【账户】 选项卡
4. 找到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务” 一栏
5. 查看 SMTP 服务 是否已开启:
如果显示 “未开启”,点击 “开启”,
系统会要求你 验证手机号,按照提示发送短信,
验证成功后,会生成一个 16 位 SMTP 授权码
6. 把这个 16 位授权码保存好!以后你在程序中配置 SMTP 密码时,就填它,而不是 QQ 密码!
##### 登录用户设置邮箱:
h5_userinfo表的备用字段param3为用户邮箱,填入该用户的qq邮箱即可在登录后收到邮件


#### 引入druid数据源
项目启动后浏览器输入 http://localhost:8080/druid/
可访问数据库监控后台,登录账号密码见配置文件(默认admin/123456)

#### 引入Prometheus和grafana集成JVM监控后台
###### Prometheus安装
1. 解压
2. 修改prometheus.yml文件中scrape_configs:为
```yaml
scrape_configs:
- job_name: 'spring-boot-app'
metrics_path: '/actuator/prometheus' # 必须是这个路径
static_configs:
- targets: ['localhost:8080'] # 你的 Spring Boot 应用地址
```
3. 点击prometheus.exe运行prometheus服务。
4. 登录Grafana面板后,浏览器输入 http://localhost:3000
5. 连接->数据源->Connection:Prometheus server URL 处填入 http://localhost:9090
6. 点击保存并测试
7. 首页的同一行,右侧点击 + 号,导入仪表板,输入4701,加载模版,选择数据库后即可
###### grafana安装
1. 点击msi安装
2. 浏览器输入 http://localhost:3000
3. 设置中文:
在 grafana默认配置 grafana安装目录/conf/defaults.ini 中,将default_language = en-US改为 zh-Hans即可
4. 重新登录
###### 启动
安装并且设置完prometheus和Grafana后,先启动项目,再启动prometheus
然后浏览器输入 http://localhost:3000,登录Grafana后台,账号密码都是admin



#### 引入RabbitMq
###### erlang安装和RabbitMq安装
1. 先安装erlang
2. 配置erlang环境变量,path路径配置到erlang的bin目录
3. rabbitMq安装后,到D:\RabbitMQ\rabbitmq_server-3.7.9\sbin目录下cmd
4. 输入rabbitmq-plugins enable rabbitmq_management
5. 最后出现started 3 plugins即成功
###### 启动
项目启动后浏览器输入 http://localhost:15672/
可访问RabbitMq后台,登录账号密码见配置文件(默认guest/guest)

#### 引入redis
###### redis安装
打开windows版redis的安装目录,找到
redis.windows.conf 和 redis.windows-service.conf
在最后一行添加
requirepass 123
那么密码就是123
然后win键+r,输入services.msc,找到redis服务重启

###### redis说明
自定义实现通用方法,基于RedisService类,另外新建一个RedisServiceWithFallback类,包装
了RedisService,实现降级容灾的功能。当redis连接不上时,会启用降级处理,去查数据库而不是
redis
###### redis停机后的降级处理
win键+r,输入services.msc,找到redis且关掉redis服务后,启动项目


#### 引入自定义日志
LoggingAspect使用日志切面,主要打印请求头、请求体、响应内容、响应时间等参数。
同时日志会被持久化到本地
#### 引入多环境配置
分为dev、test和prod,prod不会打印自定义sql日志
#### 引入全局异常处理
GlobalExceptionHandler