1. 项目概述:为什么Jeecg-Boot不是又一个“玩具级”低代码平台?
我第一次在客户现场看到Jeecg-Boot跑起来,是在一个省级政务云迁移项目里。当时客户信息科负责人盯着后台自动生成的37个Java类、12个Vue组件和完整的SQL建表语句,沉默了足足半分钟,然后说:“这玩意儿……真能直接上线?”——这句话问出了所有技术负责人心里最真实的疑虑。Jeecg-Boot不是那种拖拽几个按钮就生成个待办列表的“演示型”平台,它是一套完整嵌入企业开发流水线的 生产级低代码引擎 ,核心价值在于把Spring Boot + Vue3这个技术栈里80%的样板代码、权限配置、CRUD模板、Excel导入导出、数据字典联动这些重复劳动,压缩成一次点击、一行自然语言指令甚至零操作。它解决的不是“会不会写代码”的问题,而是“要不要把时间花在写if-else上”的问题。
关键词里的“低代码”在这里有明确分层: 零代码模式 面向业务人员,5分钟搭出审批流+表单+报表; 低代码模式 面向开发者,用AI生成器产出可读、可调试、可Merge的工程化代码;而 AI增强模式 则让整个平台变成一个活的开发助手——你输入“生成一个带附件上传的合同审批表单,支持PDF预览和版本对比”,它不仅画出UI,还自动配置Flowable流程节点、挂载MinIO文件服务、生成带乐观锁的更新逻辑。这不是替代开发者,而是把开发者从“搬砖工”升级为“建筑师”。我见过太多团队在Spring Boot项目里反复重写Controller层的参数校验、Service层的事务边界、Vue里一模一样的el-table封装,而Jeecg-Boot把这些都固化成可配置的元数据。它的技术底座(Spring Boot 3.5 + Vue3 + Vite6 + Ant Design Vue4)决定了它不是过时的Struts2式框架,而是能无缝对接微服务、信创环境、大模型API的现代技术栈。所以当你看到“Jeecg-Boot安装与部署教程”这个标题时,真正要学的不是怎么敲几行命令,而是如何把这个平台像一把瑞士军刀一样,精准嵌入到你现有的技术决策链中——从选型评估、环境适配、安全加固到灰度发布,每一步都得踩在真实生产环境的节奏上。
2. 环境准备与架构选型:别急着启动,先看清你的战场
2.1 技术栈版本的硬性门槛与取舍逻辑
很多人卡在第一步,不是因为不会敲命令,而是没看懂Jeecg-Boot对环境的“傲慢要求”。它明确要求Node.js 20+、pnpm 9+、JDK 17+,这不是故弄玄虚。Vite6的ESM模块加载机制在Node 18下会触发大量polyfill警告,而MyBatis-Plus 3.5.12对JDK 17的VarHandle API有强依赖。我试过强行降级到JDK 11,结果在动态SQL解析时出现 UnsupportedOperationException: Cannot resolve type description for java.lang.Object ——这是字节码增强器ASM在旧JVM上无法识别新语法导致的。所以环境准备的第一条铁律是: 严格匹配官方文档的最低版本,宁可重装也不妥协 。
更关键的是后端框架分支选择。Jeecg-Boot提供四个主流分支: springboot3_sas (Spring Authorization Server)、 springboot3-satoken (Sa-Token)、 springboot2 (兼容老项目)、 main (Shiro)。这里有个隐蔽陷阱:很多教程默认推荐Shiro分支,但Shiro 2.0.4对Spring Boot 3的响应式编程支持不完善,当你要集成WebFlux或R2DBC时会遇到权限拦截器失效的问题。而 springboot3_sas 分支虽然配置复杂(需要额外部署OAuth2授权服务器),但它原生支持JWT Token的细粒度权限控制,且与Spring Security生态完全兼容。我建议新项目直接选 springboot3_sas ,原因很实在:未来要接入企业微信/钉钉SSO、做OpenAPI网关鉴权、或者升级到Spring Cloud Gateway的路由级权限时,这套体系能省掉至少两周的二次开发。至于前端, jeecgboot-vue3 必须用pnpm而非npm,因为它的monorepo结构里有 @jeecg/components 等私有包,pnpm的硬链接机制能避免node_modules里出现重复依赖导致的TypeScript类型冲突——我亲眼见过一个团队因用npm install导致 useTable Hook的返回类型被错误推断为 any ,调试了三天才发现是包管理器惹的祸。
2.2 数据库与中间件的国产化适配实操
Jeecg-Boot号称支持达梦、人大金仓等信创数据库,但“支持”不等于“开箱即用”。以达梦DM8为例,官方脚本里 CREATE TABLE 语句用的是MySQL语法,直接执行会报错 [DM]未找到列名 。真实适配步骤是:先用Jeecg-Boot自带的Online建表功能创建一张测试表,再进入达梦管理工具导出建表SQL,手动替换 AUTO_INCREMENT 为 IDENTITY(1,1) 、 VARCHAR 为 VARCHAR2 、 DATETIME 为 TIMESTAMP 。更麻烦的是分页查询——MyBatis-Plus的 PageHelper 在达梦里会生成 LIMIT ?,? 语法,而达梦只认 ROWNUM BETWEEN ? AND ? 。解决方案是修改 application-dev.yml 里的 mybatis-plus.configuration.dialect 为 dm ,并确保 pom.xml 中引入了达梦专用驱动 dm.jdbc.driver.DmDriver 。这个细节连官方文档都没强调,但却是政务项目验收的必过项。
中间件方面,Redis和Nacos的部署有隐藏坑点。Jeecg-Boot的分布式锁、在线用户统计、缓存穿透防护都强依赖Redis的Lua脚本执行能力。如果你用的是阿里云Redis企业版,必须开启“Lua脚本支持”开关,否则 RedisLockUtil 会静默失败。而Nacos作为注册中心,Jeecg-Boot默认配置的 nacos.discovery.server-addr=127.0.0.1:8848 在Docker环境下必然失败——因为容器内无法解析宿主机localhost。正确做法是在 docker-compose.yml 里用 host.docker.internal 替代,或在启动命令中加 --add-host=host.docker.internal:host-gateway 。这些不是理论知识,而是我在三个不同客户现场踩过的坑,每次修复都伴随着运维同事的白眼和咖啡机的哀鸣。
2.3 开发工具链的深度定制
IDEA配置远不止装Lombok插件那么简单。Jeecg-Boot的代码生成器产出的Java类里大量使用 @TableName("sys_user") 、 @TableField("user_name") 等注解,如果IDEA没有正确识别MyBatis-Plus的注解处理器,就会在Mapper接口里看到满屏红色波浪线。解决方案是:在 Settings > Build > Compiler > Annotation Processors 里勾选 Enable annotation processing ,并指定 Processor path 为 mybatis-plus-extension 的jar包路径。前端VSCode同样需要定制:必须安装 Volar (非Vetur)和 TypeScript Vue Plugin ,否则 <script setup lang="ts"> 里的 defineProps 类型推断会失效。我见过最离谱的案例是一个团队用WebStorm打开 jeecgboot-vue3 ,因为没配置 tsconfig.json 的 "compilerOptions": {"types": ["vite/client"]} ,导致 import.meta.env.VUE_APP_BASE_API 被标红,折腾两天才发现是编辑器配置问题。工具链的每一处定制,都是为了把Jeecg-Boot生成的“机器代码”还原成人类可维护的工程资产。
3. 核心部署流程:从源码编译到生产上线的七步法
3.1 源码拉取与分支策略的实战决策
Jeecg-Boot的GitHub仓库有2200+次提交,但 main 分支并非最稳定的选择。根据我的经验,生产环境应优先选用 springboot3-satoken 分支的最新Release Tag(如 v3.9.2 ),而非 main 分支的快照。原因在于 main 分支常包含未充分测试的AI Skills新特性,比如某次更新引入了 @AIForm 注解,但配套的前端解析器尚未完成,导致表单设计器崩溃。而Release Tag经
223



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



