发布时间:2025年5月 | 阅读约需 6 分钟
写在前面: 这不是软广。这是一个后端开发者在连续加班之后,发现了一个真正改变自己工作方式的开源项目后写下的真实经历。如果你也是 Java 后端,这篇文章也许能帮你少踩一些坑。
那个让我彻底崩溃的需求
去年底,业务提了个需求:做一个运营后台,能管用户、查订单、配置参数、导出报表、控制权限......
听起来很普通对吧?
但当我把这个拆成任务清单的时候,我数了数:
- Controller × 12
- Service × 12
- Mapper/Repository × 12
- 前端页面 × 12(表格 + 表单 + 搜索条件)
- 权限配置 × N
- 导入导出逻辑 × 若干
然后我把估时发给组长:6 周。
组长直接把钉钉消息已读不回了。
偶然发现 Erupt
那天翻 GitHub Trending,看到一个项目:Erupt。
项目简介写着:"注解驱动开发,零前端代码,零 CRUD,自动建表,实现多维数据管理"。
我的第一反应是:这种标题我见过太多了,进去十有八九是玩具级别的项目。
但我还是点进去了。
然后我看到了这段代码:
java
@Erupt(name = "用户管理", power = @Power(export = true, importable = true))
@Table(name = "t_user")
@Entity
public class User extends BaseModel {
@EruptField(
views = @View(title = "用户名"),
edit = @Edit(title = "用户名", search = @Search(vague = true))
)
private String username;
@EruptField(
views = @View(title = "注册时间", sortable = true),
edit = @Edit(title = "注册时间", search = @Search)
)
private Date createTime;
@EruptField(
views = @View(title = "账号状态"),
edit = @Edit(title = "账号状态", type = EditType.BOOLEAN, search = @Search)
)
private Boolean active;
}
就这,三十几行。
我克隆了项目,直接运行 EruptSampleApplication.main(),没有配置数据库、没有改任何 YAML,H2 内存数据库自动启动。
打开浏览器,输入 localhost:8080,登录(账号密码都是 erupt)。
管理后台在那里。
带分页列表的。带搜索框的。带新增编辑表单的。带 Excel 导出按钮的。带权限控制的。
我盯着屏幕看了大概一分钟,确认这不是写死的假数据。
它到底是怎么做到的?
Erupt 的核心思路是:把前端 UI 的语义,直接编码进 Java 注解。
运行时,框架把你的注解翻译成 JSON Schema,发给前端(Angular 写的,内置在 jar 里),前端根据 Schema 动态渲染出对应的 Table、Form、搜索条件。
这意味着:
- 没有代码生成,不是把模板代码"打印"出来让你维护
- 纯运行时动态,注解改了,UI 立刻变
- 完全类型安全,字段改名,编译器告诉你哪里出错
而且它基于 Spring Boot,不是另起炉灶的封闭系统。你所有原来的 Spring Bean、Service、Repository 全都能正常用。
我最常用的几个特性
🔍 类型安全查询,告别魔法字符串
java
List<User> users = eruptDao.lambdaQuery(User.class)
.like(User::getUsername, "张")
.eq(User::getActive, true)
.ge(User::getCreateTime, "2024-01-01")
.list();
方法引用 + 链式查询,字段改名的时候编译器直接报错,不会等到上线才发现。
📊 数据分析面板,SQL 写完就出报表
以前做 BI 报表,要么找数据团队,要么自己搭 Grafana、写 SQL、调样式,一套流程下来快一周。
Erupt 有个 @EruptCube 注解:
java
@EruptCube(
name = "订单趋势分析",
sql = "select channel, region, status, amount from t_order"
)
public class OrderCube {
@Dimension(title = "渠道")
private String channel;
@Dimension(title = "地区")
private String region;
@Measure(title = "订单量", sql = "count(*)")
private Long orderCount;
@Measure(title = "总金额", sql = "sum(amount)")
private BigDecimal totalAmount;
}
写完这个,系统直接给你一个多维分析面板,支持维度筛选、指标切换、数据下钻。
BI 报表从此自给自足。
🔐 行列权限,细粒度到字段级别
不同角色看到的不是"不同菜单",而是真正不同的数据和不同的字段。
运营只能看自己负责区域的数据,财务看到的金额字段是完整的,普通员工只看到脱敏后的。
这种权限在大多数系统里要单独写一套过滤逻辑,在 Erupt 里一个注解配置搞定。
然后 AI 来了
这是让我真正兴奋的部分。
2025 年,Erupt 的 erupt-ai 模块已经相当成熟。它支持超过 50 个大模型提供商:
| 提供商 | 代表模型 |
|---|---|
| OpenAI | GPT-4o |
| Anthropic | Claude 3.7 Sonnet |
| Gemini 2.0 Flash | |
| DeepSeek | DeepSeek-R1(思考模型) |
| 阿里云 | 通义千问 |
| 智谱 | GLM-4 |
| 字节 | 豆包 |
| 月之暗面 | Kimi-K2 |
| Ollama | 本地私有化任意模型 |
但真正让我瞠目结舌的,是一个叫 erupt-ai-claw 的子模块。
用中文和你的管理系统"对话"
AI Claw 的核心理念是:通过自然语言直接驱动你的业务系统。
不是查数据库(不安全),而是直接调用你已有的 @Erupt 实体的业务逻辑。
你可以对着它说:
"帮我查一下上周注册但还没完成实名认证的用户"
"把所有状态为'待审核'的申请,按照提交时间排序,导出成 Excel"
"统计一下过去 30 天,按渠道分组的转化率"
它就真的去执行了。
背后的原理是 @AiToolbox + @Tool 注解------你把自己的 Spring Bean 暴露成 AI 工具:
java
@AiToolbox
@Component
public class OrderTools {
@Autowired
private OrderService orderService;
@Tool("根据用户 ID 查询最近的订单记录")
public List<Order> getRecentOrders(Long userId, int days) {
return orderService.getRecentOrders(userId, days);
}
@Tool("将指定订单标记为人工审核通过")
public String approveOrder(Long orderId) {
orderService.approve(orderId);
return "订单 " + orderId + " 已审核通过";
}
}
加两个注解,你的业务方法就变成了 AI 的"手"。
它还支持 MCP 协议
如果你关注 AI Agent 领域,你一定听说过 MCP(Model Context Protocol)。
Erupt 的 AI 模块内置了 MCP 服务器支持,通过管理界面就能配置:把任何支持 MCP 的工具(文件系统、Git、数据库、浏览器等)接入你的 AI 助手。
这意味着你的后台系统可以通过对话控制浏览器、读写服务器文件、执行 Shell 命令。
(官方有警告:AI Claw 拥有较高系统权限,不建议在生产环境开启。这个警告很诚实,我欣赏这种诚实。)
真实项目里的 Erupt
我用 Erupt 重构了那个"6 周"的运营后台,最终:
- 实际耗时:11 天(含需求沟通时间)
- Java 代码量:比原来少了约 73%
- 前端代码:0 行
- 上线后新增功能迭代速度:快了约 4 倍(因为加字段真的只是加一个注解)
当然,Erupt 不是银弹。高度定制化的交互逻辑(比如拖拽排序、复杂图表交互)仍然需要自己处理。但对于绝大多数内部工具和管理后台场景,它的注解体系已经足够覆盖。
五分钟上手
1. 加 Maven 依赖
xml
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-admin</artifactId>
<version>${最新版本}</version>
</dependency>
2. 启动类加 @EruptScan
java
@EruptScan
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
3. 写你的 @Erupt 实体
启动,进 localhost:8080,用 erupt/erupt 登录。
就这三步。
一些真实数据
- Maven Central 月均下载量:数十万次
- GitHub / Gitee / GitCode 综合 Star 数:持续增长
- 覆盖场景:电商、医疗、物流、政务、SaaS、内部工具......
- 最新版本:持续更新,AI 相关功能尤其活跃
我的建议
如果你是 Java 后端开发者,正在:
✅ 做内部工具 / 运营后台 / 数据管理平台
✅ 厌倦了重复写 CRUD
✅ 想接入 AI 但不想从头搭架子
✅ 需要快速交付又不想降低代码质量
那 Erupt 值得你花一个下午去认真试一试。
它的文档写得很清晰,社区也挺活跃,有问题在 GitHub Issues 里提,响应速度不错。
支持这个项目最简单的方式
Erupt 是完全开源的(Apache 2.0),商业使用也免费。
如果这篇文章让你觉得有价值,最好的方式是去 GitHub 给它点一个 ⭐ Star:
一个 Star 对你来说只需要 3 秒,对开源项目来说意味着更多人能发现它,意味着更多贡献者愿意参与,意味着它能走得更远。
🔗 相关链接汇总
- GitHub:github.com/erupts/erup...
- 官网 & 在线 Demo:www.erupt.xyz(账号密码:guest/guest)
- 使用文档:www.yuque.com/erupts
- 生态模块:www.erupt.xyz/#!/module
如果你对 Java 后端、低代码架构、AI 工程化感兴趣,欢迎关注本公众号。我会持续分享真实项目里用到的技术和踩过的坑。
转发本文,让更多后端开发者知道这个项目。