飞算JavaAI 智能引导:从需求到工程级源码的自动化实践
一、写在前面
做过Java后端开发的同行应该都有体会:一个新项目从立项到第一版代码跑起来,光搭框架、建表、写接口模板代码就要耗掉好几天。需求文档写得再详细,到写代码这一步还是得手动一个个敲——Controller、Service、Mapper、Entity,套路都一样,但就是省不掉。
飞算JavaAI的智能引导功能,解决的就是这个问题。它不是那种简单生成几行代码片段的插件,而是一套从需求理解到源码生成的完整流水线。输入一段需求描述,它能帮你拆需求、设计接口、建表结构、写处理逻辑,最后直接生成一个包含前后端的完整工程包。
这篇文章把整个流程走一遍,说说每一步实际体验如何,哪些地方好用,哪些地方需要注意。
二、智能引导的五步流程
整个智能引导分五步,每步之间有上下文关联,前一步的输出是后一步的输入:
理解需求 → 设计接口 → 表结构设计 → 处理逻辑(接口) → 生成源码
下面逐步展开。
2.1 理解需求:把一段话拆成可执行任务
第一步是喂给它需求。你可以直接用文字描述,也支持语音输入和上传文件(图片、文档都行)。
比如我输入:
开发一个图书管理系统,需要读者管理(注册、登录、借阅记录查询)、图书管理(分类、入库、借出归还)、馆员管理(权限分配、数据统计)功能。
系统会自动把这段话拆成结构化的需求项,比如:
- 读者注册:手机号注册,密码加密存储
- 读者登录:JWT Token认证
- 图书分类管理:增删改查
- 图书入库:自动生成编号
- 借阅流程:扣减库存、记录借阅时间
- 归还流程:恢复库存、计算逾期
- 馆员权限:角色菜单分配
- 数据统计:借阅排行、库存预警
拆完之后你可以手动调整——加需求、删需求、改描述都行。这里有个细节:如果你有自定义的需求规则(比如"所有接口必须分页"、“实体类统一用Lombok”),可以在规则管理里先配好,系统会按规则来拆解。
实际感受:拆解的质量跟需求描述的清晰度直接相关。描述越具体,拆得越准。如果需求本身就很模糊,拆出来的东西也会比较笼统。建议在输入需求时把核心功能点列清楚,比写一大段散文效果好。
2.2 设计接口:自动生成API清单
需求确定后,系统会根据需求项自动生成接口设计。每个接口包含名称、请求方式、路径、入参出参描述等。
拿图书入库来说,系统会生成类似这样的接口:
| 接口名称 | 请求方式 | 路径 | 描述 |
|---|---|---|---|
| 图书入库 | POST | /api/book/instock | 录入图书信息,自动生成编号 |
| 图书列表 | GET | /api/book/list | 分页查询图书列表 |
| 图书详情 | GET | /api/book/{id} | 查询单本图书详情 |
| 图书编辑 | PUT | /api/book/{id} | 修改图书信息 |
| 图书下架 | DELETE | /api/book/{id} | 下架图书 |
同样支持手动增删改。如果你对某个接口的描述不满意,直接改就行,系统会根据修改后的内容重新校验上下文连贯性。
一个实用的点:接口设计阶段如果发现需求遗漏,可以直接回到第一步加需求,再回到接口设计时系统会自动补上对应的接口。不需要从头来过。
2.3 表结构设计:自动建表 + 读取已有库
这一步是根据需求和接口生成数据库表结构。支持两种模式:
模式一:自动设计表结构
系统会根据前面的需求自动生成建表SQL。比如根据图书管理的需求,会生成book_category、book_info、borrow_record等表,包含字段类型、长度、注释、索引等。
CREATE TABLE `book_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`book_no` varchar(32) NOT NULL COMMENT '图书编号',
`title` varchar(128) NOT NULL COMMENT '书名',
`author` varchar(64) DEFAULT NULL COMMENT '作者',
`category_id` bigint(20) NOT NULL COMMENT '分类ID',
`status` tinyint(4) DEFAULT '1' COMMENT '状态:1在馆 2借出 3下架',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_book_no` (`book_no`),
KEY `idx_category_id` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图书信息表';
模式二:选择已有数据库表
如果你的数据库已经有表了,可以连接数据库直接读取现有表结构。支持MySQL、PostgreSQL、Oracle等主流数据库。这个功能在老项目改造场景下很实用——不用重新建表,直接基于现有表结构生成代码。
还支持跨库跨表设计,即一个接口可以关联不同数据库的不同表。这在微服务架构下比较有用。
注意:使用数据库相关功能前需要先安装Database插件并配置连接。
2.4 处理逻辑:接口的业务流程
这一步是整个流程中技术含量最高的。系统会为每个接口生成详细的处理逻辑,包括:
- 业务流程描述:用自然语言描述接口的执行步骤
- 流程图可视化:以流程图形式展示接口交互过程
- 优化建议:检查上下文连贯性,给出优化前后对比
比如借阅接口的处理逻辑大概是这样的:
1. 校验读者Token,获取读者ID
2. 根据图书ID查询图书状态,校验是否在馆
3. 查询读者当前借阅数量,校验是否超过上限
4. 扣减图书库存,更新图书状态为"借出"
5. 新增借阅记录,记录借阅时间和应还时间
6. 返回借阅成功信息
系统会自动检查这个逻辑跟前面的接口设计、表结构是否一致。如果发现矛盾(比如引用了不存在的字段),会在优化描述里提示。
一个值得说的功能:处理逻辑支持导出Word文档。对于需要交付需求文档的场景,这个功能可以直接生成可编辑的文档,不用再手动整理。
2.5 生成源码:一键产出完整工程
前面四步都确认后,点"生成源码",系统会生成一个完整的Java工程项目。
生成时可以配置:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 根包名 | 项目的顶级包名 | com.library |
| 项目名称 | Maven artifactId | library-system |
| 项目根路径 | context-path路径 | /library |
| 规则文件 | 自定义代码生成规则 | 可选,不选则用默认规则 |
| 构建工具 | Maven或Gradle | 默认Maven |
| 代码优化 | 是否对生成代码进行优化 | 可选 |
| 前端项目 | 是否同时生成前端 | 可选 |
生成的源码包含:
- 后端代码:Controller、Service、ServiceImpl、Mapper、Entity、DTO、VO等完整分层
- SQL脚本:建表语句、初始化数据
- 配置文件:application.yml、pom.xml
- 前端代码:如果选择了前端,会同时生成Vue项目
- 代码检查:集成行业标准检查工具,生成的代码自带质量校验
生成后可以预览代码(左侧旧代码、右侧新代码的Diff对比模式),确认无误后点"打开项目"选择保存目录,IDEA会自动打开后端和前端两个窗口。
一个细节:预览代码时可能会看到红色标记(飘红),这是因为还没加载jar包依赖,属于正常现象。导入IDEA后会自动下载依赖,飘红就消失了。
三、实际使用中的几点经验
3.1 需求描述要结构化
不要写一大段流水账。最好按模块分条列出核心功能点,每个功能点附带关键约束。比如:
【读者管理】
- 注册:手机号+验证码,密码AES加密
- 登录:JWT,Token有效期2小时
- 借阅记录:分页查询,支持按时间/状态筛选
【图书管理】
- 分类:两级分类树
- 入库:自动生成ISBN格式编号
- 借出:扣减库存,记录借阅时间
这样拆出来的需求项更准确,后续接口和表结构的质量也更高。
3.2 善用自定义规则
如果你对生成代码有特定要求(比如统一用MyBatis-Plus、统一返回Result包装类、异常处理用全局ExceptionHandler),在规则管理里提前配好。规则分项目级和全局级:
- 项目规则:存在
.feisuan/rule目录下,只对当前项目生效 - 全局规则:对所有项目生效
规则的触发方式有四种:模型决策、始终生效、指定文件生效、手动引入。建议把通用的代码规范配成"始终生效",把特定场景的规则配成"手动引入"。
3.3 表结构设计阶段多花时间
表结构设计是承上启下的关键环节。如果表结构不合理,后面的处理逻辑和生成的代码都会有问题。建议在这个阶段仔细检查:
- 字段类型是否合理(金额用decimal而不是double)
- 索引是否充分(高频查询字段加索引)
- 关联关系是否清晰(外键约束或逻辑关联)
- 字段注释是否完整
自动生成的表结构基本可用,但通常需要根据业务场景微调。这个时间花得值。
3.4 生成源码后的处理
生成的代码是工程级的,但不是拿来就能上生产的。建议生成后做以下处理:
- 导入IDEA:下载依赖,确认编译通过
- 检查分层结构:确认Controller-Service-Mapper的调用链是否完整
- 补充业务逻辑:核心业务规则可能需要手动补充(比如借阅上限的判断逻辑)
- 调整配置:数据库连接、Redis配置等按实际环境修改
- 运行测试:启动项目,用Postman测试接口
四、适用场景分析
| 场景 | 适用度 | 说明 |
|---|---|---|
| 新项目从零开始 | ★★★★★ | 最佳场景,从需求到工程一步到位 |
| 原型验证/MVP | ★★★★★ | 快速生成可运行的原型,验证需求可行性 |
| 老项目功能扩展 | ★★★★ | 可选择已有数据库表,基于现有表结构生成新功能代码 |
| 教学演示 | ★★★★ | 生成标准分层的代码,适合学习项目结构 |
| 生产级项目直接使用 | ★★★ | 生成的是骨架代码,核心逻辑需手动完善 |
五、总结
飞算JavaAI的智能引导本质上做了一件事:把从需求到代码这段重复劳动密集的路径自动化了。
五步流程的设计逻辑清晰——需求拆解决"做什么",接口设计解决"怎么交互",表结构解决"数据怎么存",处理逻辑解决"怎么处理",生成源码解决"代码怎么写"。每一步都可以人工干预,不是黑盒。
对于新项目启动和原型验证场景,这个工具能节省大量模板代码编写时间。但要注意,生成的代码是高质量骨架,不是成品。核心业务逻辑的深度打磨仍然需要开发者来完成。
工具的价值在于把人从重复劳动中解放出来,去做更有价值的设计和思考。从这个角度看,智能引导做到了。
567

被折叠的 条评论
为什么被折叠?



