# 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方法 ![img.png](ssm/readImg/run1.png) 3. 找到application-dev.yml文件,配置好url和账号密码 ![img.png](ssm/readImg/run2.png) 4. 运行启动类SsmApplication ![img.png](ssm/readImg/run3.png) 5. (可选)安装windows版redis且启动redis服务,否则会采用降级登录方式 ### 导入apifox 找到根目录下apifoxJson文件夹下面的test.apifox.json文件, 导入到apifox或postman中,用来模拟前端发送请求 ### 功能简介 #### 登录 登录时生成AES加密后的token,除了登录接口和其他一些特殊接口外,发请求时 请求头必须要携带token,以便后端进行校验 ![img.png](ssm/readImg/login1.png) #### 发起其他请求 ![img.png](ssm/readImg/login2.png) ![img.png](ssm/readImg/login3.png)
#### 模仿Mybatisplus的自动代码生成类 找到GenMySqlCode,配置好信息可自动生成代码,生成通用增删改查、导入和导出(基于easyexcel) 接口 ![img.png](ssm/readImg/genCode1.png)

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

#### 自实现表定时备份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文档 ![img.png](ssm/readImg/swagger.png)

#### 引入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邮箱即可在登录后收到邮件 ![img.png](ssm/readImg/email1.png) ![img.png](ssm/readImg/email2.png)

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

#### 引入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 ![img.png](ssm/readImg/jvm1.png) ![img.png](ssm/readImg/jvm2.png) ![img.png](ssm/readImg/jvm3.png)

#### 引入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) ![img.png](ssm/readImg/rabbitMq.png)

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

###### redis说明 自定义实现通用方法,基于RedisService类,另外新建一个RedisServiceWithFallback类,包装 了RedisService,实现降级容灾的功能。当redis连接不上时,会启用降级处理,去查数据库而不是 redis

###### redis停机后的降级处理 win键+r,输入services.msc,找到redis且关掉redis服务后,启动项目 ![img.png](ssm/readImg/redisStop1.png) ![img.png](ssm/readImg/redisStop2.png)

#### 引入自定义日志 LoggingAspect使用日志切面,主要打印请求头、请求体、响应内容、响应时间等参数。 同时日志会被持久化到本地

#### 引入多环境配置 分为dev、test和prod,prod不会打印自定义sql日志

#### 引入全局异常处理 GlobalExceptionHandler