Skip to content

光谱后台管理系统(Spectra Admin System)

一个基于 Spring Boot 4 + Vue 3 的现代化前后端分离通用框架

JavaSpring BootVuePostgreSQL18License

🚀 为什么做这个项目?

在多年的后端开发实践中,微服务等高阶架构并非每个项目都能用上。
而“Spring Boot + Vue”的单体前后端分离架构,依然是中小型项目和快速开发场景下的主流选择。

为了减少重复造轮子、统一开发规范、提升团队效率,我着手打造了一个开箱即用、结构清晰、技术栈现代化的通用后台管理系统框架 —— Spectra

它不仅包含权限管理、通用 CRUD等基础能力,还集成了当前主流的技术组件,力求做到易用、可扩展、可持续维护

🛠 技术选型

后端技术栈

技术版本说明
JavaJDK25使用最新LTS版本,性能更强
Maven3.9.12构建工具
Spring Boot4.0.1核心框架
Spring Security7.0.0权限认证框架
MyBatis-Plus3.5.15增强ORM,简化CRUD
MapStruct1.6.3实体映射工具,提升性能
PostgreSQL18知名关系型数据库

✅ 所有依赖均采用当前稳定最新版,并将持续跟进生态更新。


前端技术栈

包名版本用途
Vue3.5.26渐进式前端框架
Vue Router4.6.4路由管理
Pinia3.0.4状态管理(Vuex替代)
@vueuse/core14.1.0实用 Composition API 工具库
Vite7.3.0构建工具,极速启动
Element Plus2.12.0UI 组件库
Axios1.13.2HTTP 请求客户端
ECharts6.0.0数据可视化图表
vue-echarts8.0.1转为vue封装的echarts操作组件
Lodash4.17.21工具函数库,简化数据操作
Oxlint1.33.0代码质量检查
Prettier3.7.4统一代码格式风格

⚙️ 开发环境配置建议

IDEA JVM 参数调优(降低内存占用)

bash
-Xms256m -Xmx256m -Xmn100m

💡 适用于本地开发环境,有效减少服务启动内存消耗,提高多服务并行运行效率。

🔐 环境变量配置说明

text
⚠️ 该文件不会提交至 Git,请自行创建。
⚠️ 项目使用mise管理环境.
⚠️ 可重命名`.mise.local.toml.example`文件为`.mise.local.toml`,并把值设置为本地相关的值

后端 .mise.local.toml 文件(位于 spectra-admin 目录下)

环境变量说明示例
DB_URL数据库URLDB_URL=jdbc:postgresql://127.0.0.1:5237/spectra_db
DB_USERNAME数据库用户名DB_USERNAME=XXX
DB_PASSWORD数据库密码DB_PASSWORD=XXX
DEFAULT_PASSWORD新增用户,重置用户密码的默认密码DEFAULT_PASSWORD=admin123
LICENSE_PASSWORD许可模式,使用的密钥密码(临时用)LICENSE_PASSWORD=XXX
SSL_PASSWORDSSL的密码SSL_PASSWORD=xxx
SSL_TYPESSL的类型SSL_TYPE=PKCS12
SSL_ALIASSSL的别名SSL_ALIAS=xxx

用于数据库密码等敏感配置的加密保护。

  1. SSL 开头的几个配置根据实际需要进行配置即可
  2. LICENSE 开头的如果没用到 LICENSE 模块则无效

前端 .env 文件(位于 spectra-ui 目录)

环境变量说明示例
VITE_API_URL后端API基础地址(末尾需带 /VITE_API_URL=https://localhost:8888/
VITE_WEB_TITLE网站名称光谱平台

支持 .env.development.env.production 多环境配置。

🧩 项目模块结构

模块路径说明
spectra-commonspectra-common通用工具类、注解、常量、DTO等共享内容
spectra-corespectra-core核心接口定义、领域模型、服务契约
spectra-workflowspectra-workflow工作流模块,选用的flowable流程框架
spectra-launchspectra-launch启动模块 & 业务入口,用户可在此编写具体业务逻辑
spectra-uispectra-ui前端 Vue 项目,基于 Vite + Element Plus

📌 推荐使用方式:spectra-launch 作为你的“业务模块”,可自由扩展控制器、服务、Mapper 等。

🌟 特性亮点

  • ✅ 基于 Spring Boot 4 + Java 25,响应式编程支持
  • ✅ 前后端完全分离,Vite 提供极速 HMR
  • ✅ SpringSecurity 实现 RBAC 权限模型(用户、角色、菜单、按钮权限)
  • ✅ MyBatis-Plus + MapStruct 提升开发效率
  • ✅ 标准 RESTful API 设计
  • ✅ 可扩展的模块化架构,便于二次开发

⚠️ Docker 部署说明(验证码 & 字体相关)

本项目的 验证码功能依赖 Java AWT(java.desktop 模块)进行字体注册与图像绘制。 在使用 Spring Boot 官方 build-image 构建 Docker 镜像时,需要注意运行环境差异:

问题说明

  • Spring Boot build-image 默认使用精简(headless)JRE
  • 该运行环境 不包含 java.desktop 模块及字体渲染依赖
  • 会导致以下异常(示例):
text
java.io.IOException: Problem reading font data

解决方案(推荐)

请使用 完整 JDK 的 buildpack 构建镜像,例如:

xml
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <image>
      <builder>paketobuildpacks/builder-jammy-full</builder>
    </image>
  </configuration>
</plugin>

该 builder 提供:

  • 完整的 java.desktop 模块
  • 字体渲染所需的系统依赖(fontconfig / freetype)
  • 支持 AWT 字体注册与验证码正常生成

说明

  • 本地开发环境(完整 JDK)通常不会出现该问题
  • 若后续切换为精简镜像或无 GUI 运行环境,请确保验证码功能已做兼容处理

🤝 贡献与反馈

欢迎提交 Issue 或 Pull Request!
如果你在使用中遇到问题,或有功能建议,都可以在 GitHub 提出。

🙌 持续迭代中,欢迎 Star ⭐ 支持!

📄 许可证

本项目基于 Apache-2.0 开源,可免费用于个人或商业项目。

Spectra —— 简洁有力,照亮你的开发之路 🌈