基于 Spring Boot 4 的现代化通用后端框架
前端项目已分离至独立仓库:spectra-ui
在多年的后端开发实践中,微服务等高阶架构并非每个项目都能用上。
而后端框架的标准化和复用,对于提升团队效率至关重要。
为了减少重复造轮子、统一开发规范、提升团队效率,我着手打造了一个开箱即用、结构清晰、技术栈现代化的通用后台管理系统框架 —— Spectra。
它不仅包含权限管理、通用 CRUD等基础能力,还集成了当前主流的技术组件,力求做到易用、可扩展、可持续维护。
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | JDK25 | 使用最新LTS版本,性能更强 |
| Maven | 3.9.12 | 构建工具 |
| Spring Boot | 4.1.0 | 核心框架 |
| Spring Security | 7.1.0 | 权限认证框架 |
| MyBatis-Plus | 3.5.15 | 增强ORM,简化CRUD |
| MapStruct | 1.6.3 | 实体映射工具,提升性能 |
| PostgreSQL | 18.2 | 知名关系型数据库 |
✅ 所有依赖均采用当前稳定最新版,并将持续跟进生态更新。
-Xms256m -Xmx256m -Xmn100m💡 适用于本地开发环境,有效减少服务启动内存消耗,提高多服务并行运行效率。
⚠️ 该文件不会提交至 Git,请自行创建。
⚠️ 项目使用mise管理环境.
⚠️ 可重命名`.mise.local.toml.example`文件为`.mise.local.toml`,并把值设置为本地相关的值
后端 .mise.local.toml 文件(位于 spectra-admin 目录下)
| 环境变量 | 说明 | 示例 |
|---|---|---|
DB_URL |
数据库URL | DB_URL=jdbc:postgresql://127.0.0.1:5432/devops00_spectra_db |
DB_USERNAME |
数据库用户名 | DB_USERNAME=XXX |
DB_PASSWORD |
数据库密码 | DB_PASSWORD=XXX |
DEFAULT_PASSWORD |
新增用户,重置用户密码的默认密码 | DEFAULT_PASSWORD=admin123 |
SERVER_PORT |
服务端口 | SERVER_PORT=8080 |
REDIS_HOST |
Redis地址 | REDIS_HOST=127.0.0.1 |
REDIS_PORT |
Redis端口 | REDIS_PORT=6379 |
REDIS_DB |
Redis数据库 | REDIS_DB=0 |
REDIS_PASSWORD |
Redis密码 | REDIS_PASSWORD=XXX |
SSL_PASSWORD |
SSL的密码 | SSL_PASSWORD=xxx |
SSL_TYPE |
SSL的类型 | SSL_TYPE=PKCS12 |
SSL_ALIAS |
SSL的别名 | SSL_ALIAS=xxx |
用于数据库密码等敏感配置的加密保护。
Redis和S3相关配置可根据实际需要进行配置。
| 模块 | 路径 | 说明 |
|---|---|---|
spectra-common |
spectra-common | 通用工具类、注解、常量、DTO等共享内容 |
spectra-framework |
spectra-framework | 平台配置、Redis、AOP、缓存 |
spectra-core |
spectra-core | 核心接口定义、领域模型、服务契约 |
spectra-upload |
spectra-upload | 文件上传模块(S3) |
spectra-workflow |
spectra-workflow | 工作流模块,选用的flowable流程框架 |
spectra-oa |
spectra-oa | OA模块 |
spectra-ai |
spectra-ai | AI集成模块(LangChain4j) |
spectra-launch |
spectra-launch | 启动模块 & 业务入口,用户可在此编写具体业务逻辑 |
📌 推荐使用方式:
spectra-launch作为你的“业务模块”,可自由扩展控制器、服务、Mapper 等。
- ✅ 基于 Spring Boot 4 + Java 25
- ✅ SpringSecurity 实现 RBAC 权限模型(用户、角色、菜单、按钮权限)
- ✅ MyBatis-Plus + MapStruct 提升开发效率
- ✅ 集成 Flowable 工作流引擎
- ✅ 集成 LangChain4j AI 能力
- ✅ 支持 S3 文件存储
- ✅ 标准 RESTful API 设计
- ✅ 可扩展的模块化架构,便于二次开发
本项目的 验证码功能依赖 Java AWT(java.desktop 模块)进行字体注册与图像绘制。
在使用 Spring Boot 官方 build-image 构建 Docker 镜像时,需要注意运行环境差异:
- Spring Boot
build-image默认使用精简(headless)JRE - 该运行环境 不包含
java.desktop模块及字体渲染依赖 - 会导致以下异常(示例):
java.io.IOException: Problem reading font data
请使用 完整 JDK 的 buildpack 构建镜像,例如:
<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 —— 简洁有力,照亮你的开发之路 🌈