From f9c7d236f1f585ea3443148f565b7f616c243066 Mon Sep 17 00:00:00 2001 From: sunhe <1279224279@qq.com> Date: Sun, 13 Apr 2025 21:52:00 +0800 Subject: [PATCH] first commit --- README.md | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..30b6575 --- /dev/null +++ b/README.md @@ -0,0 +1,181 @@ +# SpringBoot 项目初始模板 + +> 作者:[程序员鱼皮](https://github.com/liyupi) +> 仅分享于 [编程导航知识星球](https://yupi.icu) + +基于 Java SpringBoot 的项目初始模板,整合了常用框架和主流业务的示例代码。 + +只需 1 分钟即可完成内容网站的后端!!!大家还可以在此基础上快速开发自己的项目。 + +[toc] + +## 模板特点 + +### 主流框架 & 特性 + +- Spring Boot 2.7.x(贼新) +- Spring MVC +- MyBatis + MyBatis Plus 数据访问(开启分页) +- Spring Boot 调试工具和项目处理器 +- Spring AOP 切面编程 +- Spring Scheduler 定时任务 +- Spring 事务注解 + +### 数据存储 + +- MySQL 数据库 +- Redis 内存数据库 +- Elasticsearch 搜索引擎 +- 腾讯云 COS 对象存储 + +### 工具类 + +- Easy Excel 表格处理 +- Hutool 工具库 +- Apache Commons Lang3 工具类 +- Lombok 注解 + +### 业务特性 + +- 业务代码生成器(支持自动生成 Service、Controller、数据模型代码) +- Spring Session Redis 分布式登录 +- 全局请求响应拦截器(记录日志) +- 全局异常处理器 +- 自定义错误码 +- 封装通用响应类 +- Swagger + Knife4j 接口文档 +- 自定义权限注解 + 全局校验 +- 全局跨域处理 +- 长整数丢失精度解决 +- 多环境配置 + + +## 业务功能 + +- 提供示例 SQL(用户、帖子、帖子点赞、帖子收藏表) +- 用户登录、注册、注销、更新、检索、权限管理 +- 帖子创建、删除、编辑、更新、数据库检索、ES 灵活检索 +- 帖子点赞、取消点赞 +- 帖子收藏、取消收藏、检索已收藏帖子 +- 帖子全量同步 ES、增量同步 ES 定时任务 +- 支持微信开放平台登录 +- 支持微信公众号订阅、收发消息、设置菜单 +- 支持分业务的文件上传 + +### 单元测试 + +- JUnit5 单元测试 +- 示例单元测试类 + +### 架构设计 + +- 合理分层 + + +## 快速上手 + +> 所有需要修改的地方鱼皮都标记了 `todo`,便于大家找到修改的位置~ + +### MySQL 数据库 + +1)修改 `application.yml` 的数据库配置为你自己的: + +```yml +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/my_db + username: root + password: 123456 +``` + +2)执行 `sql/create_table.sql` 中的数据库语句,自动创建库表 + +3)启动项目,访问 `http://localhost:8101/api/doc.html` 即可打开接口文档,不需要写前端就能在线调试接口了~ + +![](doc/swagger.png) + +### Redis 分布式登录 + +1)修改 `application.yml` 的 Redis 配置为你自己的: + +```yml +spring: + redis: + database: 1 + host: localhost + port: 6379 + timeout: 5000 + password: 123456 +``` + +2)修改 `application.yml` 中的 session 存储方式: + +```yml +spring: + session: + store-type: redis +``` + +3)移除 `MainApplication` 类开头 `@SpringBootApplication` 注解内的 exclude 参数: + +修改前: + +```java +@SpringBootApplication(exclude = {RedisAutoConfiguration.class}) +``` + +修改后: + + +```java +@SpringBootApplication +``` + +### Elasticsearch 搜索引擎 + +1)修改 `application.yml` 的 Elasticsearch 配置为你自己的: + +```yml +spring: + elasticsearch: + uris: http://localhost:9200 + username: root + password: 123456 +``` + +2)复制 `sql/post_es_mapping.json` 文件中的内容,通过调用 Elasticsearch 的接口或者 Kibana Dev Tools 来创建索引(相当于数据库建表) + +``` +PUT post_v1 +{ + 参数见 sql/post_es_mapping.json 文件 +} +``` + +这步不会操作的话需要补充下 Elasticsearch 的知识,或者自行百度一下~ + +3)开启同步任务,将数据库的帖子同步到 Elasticsearch + +找到 job 目录下的 `FullSyncPostToEs` 和 `IncSyncPostToEs` 文件,取消掉 `@Component` 注解的注释,再次执行程序即可触发同步: + +```java +// todo 取消注释开启任务 +//@Component +``` + +### 业务代码生成器 + +支持自动生成 Service、Controller、数据模型代码,配合 MyBatisX 插件,可以快速开发增删改查等实用基础功能。 + +找到 `generate.CodeGenerator` 类,修改生成参数和生成路径,并且支持注释掉不需要的生成逻辑,然后运行即可。 + +``` +// 指定生成参数 +String packageName = "com.yupi.springbootinit"; +String dataName = "用户评论"; +String dataKey = "userComment"; +String upperDataKey = "UserComment"; +``` + +生成代码后,可以移动到实际项目中,并且按照 `// todo` 注释的提示来针对自己的业务需求进行修改。