# Yue-An-mini-Plus
**Repository Path**: ukoko/yue-an-mini-plus
## Basic Information
- **Project Name**: Yue-An-mini-Plus
- **Description**: 单点后端基础框架--简洁版
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 0
- **Created**: 2024-09-24
- **Last Updated**: 2026-02-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#
Yue-An-mini-Plus平台简介
#### 基于SpringBoot研发的后端极简开发框架(搭配ya-admin模板)
## 一、概述
### 1. 介绍
单点后端基础框架--简洁版(适配ya-admin前端模板)
```
预览地址: http://106.14.27.178/
用户名/密码: admin/admin
数据每隔半小时重置一次
在线API文档地址: http://106.14.27.178:8080/doc.html
```
### 2. 本地开发部署
#### 2.1 数据库
```
第一步: 创建数据库命令
CREATE DATABASE `yue-an-mini-plus` CHARACTER SET utf8;
第二步: 执行SQL文件
执行 yue-an-mini-plus/sql/yue-an-mini-plus-export.sql 文件
```
#### 2.2 后端开发部署
```
1. 克隆项目到本地 git clone https://gitee.com/ukoko/yue-an-mini-plus.git
2. 导入到IDEA开发工具中
3. 修改配置文件 application-dev.yml 中的数据库密码为自己的数据库密码
```
#### 2.3 前端开发部署
```
使用vscode开发工具打开项目,不要用别的开发工具,具体原因参考 https://hs-an-yue.github.io/ 博客中的《Live Server代理实现》
```
## 二、特别重要(写在前面)
```
大家在进行代码开发时经常会进行判空操作
1. 对象判空
2. 字符串判空
3. 集合判空
3.1 Collection集合判空
3.2 Map集合判空
4. 数组判空
大家在进行判空时尽量不要使用 !=null 或者 !="" 这样的操作,不是不能用,是当前项目中提供了工具类 例如 hutool工具类
1. 对象判空 使用jdk自带的Objects (java.util.Objects)
2. 字符串判空 使用commons-lang3 (org.apache.commons.lang3.StringUtils)
3. 集合判空
3.1 Collection集合判空 hutool工具CollectionUtil(cn.hutool.core.collection.CollectionUtil)
3.2 Map集合判空 hutool工具MapUtil(cn.hutool.core.map.MapUtil)
4. 数组判空 hutool工具类ArrayUtil(cn.hutool.core.util.ArrayUtil)
工具不限于上面所介绍的,因为当前项目中集成了很多框架,几乎每一个框架都带有自己的判空逻辑,我们作为程序员完全可以复用.
```
## 三、为什么选择SpringBoot3.3.4版本
因为SpringBoot从此版本后开始支持AI模型,AI模型是近年来比较热门的方向,所以架构定位使用SpringBoot3.3.4
我们可以不用,但是不能不支持
## 四、技术清单
| 技术名称 |
版本 |
备注 |
文档 |
| JDK |
17 |
SpringBoot3.x 最低需要JDK17 |
https://www.oracle.com/cn/ |
| SpringBoot |
3.3.4 |
此版本后开始支持AI大模型 例如 ollama |
https://docs.spring.io/spring-boot/index.html |
| SpringSecurity |
6.3.3 |
权限采用RBAC模式 |
https://spring.io/projects/spring-security/ |
| MyBaits-Plus |
3.5.12 |
ORM框架 |
https://baomidou.com |
| java-jwt |
3.3.0 |
token生成工具 |
https://jwt.io/ |
| ip-info |
2.1.7 |
ip地址定位 ipv4,ipv6 |
https://gitee.com/jthinking/ip-info |
| hutool-all |
5.8.32 |
Hutool工具箱 |
https://doc.hutool.cn/ |
| slf4j+logback |
跟随SpringBoot版本 |
日志 |
https://spring.io/ |
| pagehelper |
2.1.0 |
分页插件 |
https://github.com/pagehelper/pagehelper-spring-boot |
| knife4j |
4.4.0 |
在线API文档工具 |
https://doc.xiaominfo.com/ |
| lombok |
跟随SpringBoot版本 |
Java库(get/set/构造器/日志等) |
https://spring.io/ |
| ai-ollama |
1.0.0 M2 |
AI大模型(需要本地自己部署,或者调用其他厂商API) |
https://spring.io/projects/spring-ai/ (Spring官网文档)
https://github.com/hs-an-yue/handy-ollama (ollama学习文档)
|
## 五、功能介绍
### 1. 基础架构功能
| 业务功能 |
是否完成 |
备注 |
| 统一异常处理 |
√ |
无 |
| 统一日志处理 |
√ |
无 |
| 统一提示消息处理 |
√ |
无 |
| 用户信息定位 |
√ |
无 |
| 日志链路追踪 MDC |
√ |
无 |
| 权限控制 基于RBAC |
√ |
【SpringSecurity任意版本快速入门】 https://www.bilibili.com/video/BV1sFtyefEyo/?share_source=copy_web&vd_source=8db8b6483dca8eb390d2e74514e2c7d2
|
### 2. 基础业务功能
| 业务功能 |
是否完成 |
备注 |
| 验证码 |
√ |
无 |
| 用户登录 |
√ |
无 |
| 头像上传 |
√ |
无 |
| 文件上传 |
√ |
无 |
| 账户过期禁用 |
√ |
通过定时任务(每晚11点开始运行任务) |
### 3. 项目结构展示
### 4. 在线API文档展示
### 5. 日志链路追踪演示
> 模拟异常(随便搞出一个异常) 复制链路追踪码
> 去Linux服务器定位日志的位置 使用命令 grep '链路追踪码' 日志文件
> 正常日志打印 业务日志都带有链路追踪码
### 6. banner定制化
### 7. 注意
```
1. SpringBoot3.x 集成 knife4j-openapi3 会报一个不影响系统使用的BUG
此BUG是因为配置了全局异常处理器,knife4j在运行时,去 resources/static 目录下 找favicon.ico文件,找不到走了全局异常处理器,不影响系统使用
解决方案: 强迫症者的福音,在 resources/static 目录下随便创建一个favicon.ico类型文件即可
2. 大家谨遵业务逻辑处理尽量都要放在Service层,否则业务复杂度高时,数据量大时,事务问题可能隐藏着特别深的坑,大家最好不要service层调用service层方法,可能会出现事务的传播行为,有些行为可能是你想要的,有些不是,一旦出现很难定位.
3. 应用在打包部署到Centos服务器上时,有些服务器可能缺少字体,报异常(Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargeException)
这里以Centos为例安装字体步骤如下:
第一步: 安装: yum install fontconfig
第二步: 切换到目录: cd /usr/share/fonts
第三步: 刷新: fc-cache
第四步: 重新启动软件应用
4. 由于ORM框架升级出现的问题介绍
问题: mybatis升级到mybatis-plus会出现 mybatis-plus不支持联合主键的问题 @TableId注解在一个类中只能有一个,但是联合主键主键有多个,所以mybatis-plus不支持联合主键
解决方案:
方案1: 采用原生mybatis的SQL语句方式操作带有联合主键的表
方案2: 社区有人专门提供了解决方案 mybatisplus-plus (地址: https://gitee.com/jeffreyning/mybatisplus-plus) 个人不建议使用,因为社区升级或者BUG修复可能跟不上,这个需要个人评估影响
```
> QQ群
---
> BUG修复
```
2024/10/20 修复SpringSecurity各个认证状态失败提示消息修改
2024/10/24 添加用户到期禁用的定时任务
2025/7/8 升级ORM框架 mybatis --> mybatis-plus
```