Skip to content

正式开发

最后更新: 13 天前
实践版本: v4.0.0

本文档将以开发【岗位管理】功能为例,详细介绍如何基于 ContiNew Admin 框架进行实际业务开发,展示完整的基础 CRUD 功能实现流程。

本篇文档所涉及 IDE 及版本

后端 IDE:IntelliJ IDEA 2025.1.4.1 (Ultimate Edition)
前端 IDE:WebStorm 2025.1.4.1

版本确认

在开始项目开发前,请确保您下载的是 ContiNew Admin 稳定版而非开发版(dev 分支)。开发版可能包含不稳定的功能特性,未经全面测试,不建议作为生产项目开发模板。

请选择 最新稳定版分支(推荐,对应 v4.0.0 版本的维护分支)下载最新稳定版源码 进行开发。

开源平台后端最新稳定版前端最新稳定版
GitCodecontinew-admin/releasescontinew-admin-ui/releases
Giteecontinew-admin/releasescontinew-admin-ui/releases
GitHubcontinew-admin/releasescontinew-admin-ui/releases

温馨提示

演示环境基于 dev 分支自动构建,其中部分功能可能为预览版,尚未在稳定版中发布。若您能持续跟进更新,也可以使用 dev 分支,但请注意:

  • 新版本开发初期和末期,dev 分支通常较为稳定
  • 开发中期,dev 分支可能会有较大变动,请谨慎使用

准备工作

使用脚手架项目时,除了修改项目名称外,还需要进行一些准备工作,如删除无关代码及配置,个性化配置:如包名、Logo 等品牌元素。

后端配置

删除无关内容

根据实际业务需要删除无关目录、模块和业务代码。

bash
continew-admin
├─ continew-server(打包部署模块)
├─ continew-system(系统管理模块,存放系统管理相关业务功能,例如:部门管理、角色管理、用户管理等)
├─ continew-plugin(插件模块,存放能力开放、租户等扩展模块,后续会进行插件化改造)
  ├─ continew-plugin-open(能力开放插件模块)
  ├─ continew-plugin-tenant(租户插件模块)
  ├─ continew-plugin-schedule(任务调度插件模块)
  ├─ continew-plugin-generator(代码生成器插件模块)
  └─ pom.xml
├─ continew-common(公共模块,存放公共工具类,公共配置等)
├─ continew-extension(扩展模块)
  ├─ continew-extension-schedule-server(任务调度服务端模块,实际开发时如果是公司统一提供环境,可直接删除本模块)
  └─ pom.xml
├─ .github(GitHub 相关配置目录,实际开发时直接删除)
├─ .image(截图目录,实际开发时直接删除)
├─ .style(代码格式、License文件头相关配置目录,实际开发时根据需要取舍,删除时注意删除 /pom.xml 中的 spotless 插件配置)
├─ .gitignore(Git 忽略文件相关配置文件)
├─ docker(项目部署相关配置目录,实际开发时可备份后直接删除)
├─ LICENSE(开源协议文件)
├─ CHANGELOG.md(更新日志文件,实际开发时直接删除)
├─ README.md(项目 README 文件,实际开发时替换为真实内容)
├─ lombok.config(Lombok 全局配置文件)
└─ pom.xml(包含版本锁定及全局插件相关配置)

删除 continew-admin/pom.xml 中的格式化插件配置和 Sonar 扫描配置。

continew-admin/pom.xml
xml
<!-- 代码格式化插件 -->
<plugin>
    <groupId>com.diffplug.spotless</groupId>
    <artifactId>spotless-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>apply</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <java>
            <removeUnusedImports/>
            <eclipse>
                <file>.style/p3c-codestyle.xml</file>
            </eclipse>
            <licenseHeader>
                <file>.style/license-header</file>
            </licenseHeader>
        </java>
    </configuration>
</plugin>
continew-admin/pom.xml
xml
<profiles>
    <!-- Sonar 代码质量分析 -->
    <profile>
        <id>sonar</id>
        <properties>
            <sonar.host.url>https://sonarcloud.io</sonar.host.url>
            <sonar.organization>charles7c</sonar.organization>
            <sonar.projectKey>Charles7c_continew-admin</sonar.projectKey>
            <sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>sonar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

修改项目模块与包名

通过 IDE 对项目模块和包名进行重命名,完成后需同步更新 continew-server/pom.xml<properties> 节点的 <main-class> 打包配置。

修改 Banner

编辑 continew-server/.../resources/banner.txt 文件内容,可通过 在线工具 生成个性化 Banner。

continew-server/banner.txt
   ____               _    _  _   _                          _        _             _
  / ___| ___   _ __  | |_ (_)| \ | |  ___ __      __        / \    __| | _ __ ___  (_) _ __
 | |    / _ \ | '_ \ | __|| ||  \| | / _ \\ \ /\ / /_____  / _ \  / _` || '_ ` _ \ | || '_ \
 | |___| (_) || | | || |_ | || |\  ||  __/ \ V  V /|_____|/ ___ \| (_| || | | | | || || | | |
  \____|\___/ |_| |_| \__||_||_| \_| \___|  \_/\_/       /_/   \_\\__,_||_| |_| |_||_||_| |_|

修改控制台启动输出

编辑 continew-server/.../java/.../ContiNewAdminApplication 类,调整控制台启动输出内容。

修改应用信息

编辑 continew-server/.../resources/config/application.yml 文件中的【应用配置】部分。其他环境配置文件(如 application-prod.yml)中的【应用配置】也需同步修改。

温馨提示

  • 若项目未开源,可删除 【许可协议信息配置】 部分
  • 项目中 90% 的品牌元素已集中到 【应用配置】 中,修改此处即可统一更新大部分品牌信息
  • 代码中通过注入 top.continew.starter.core.autoconfigure.application.ApplicationProperties 获取全局应用配置
  • 其他 Spring Boot 配置也通过 ${} 引用了部分应用配置,例如 ${application.base-package}
continew-server/application.yml
yaml
--- ### 应用配置
application:
  id: continew-admin
  # 名称
  name: ContiNew Admin
  # 描述
  description: 持续迭代优化的前后端分离中后台管理系统框架,开箱即用,持续提供舒适的开发体验。
  # 版本
  version: 4.0.0
  starter: 2.13.4
  # 基本包
  base-package: top.continew.admin
  ## 作者信息配置
  contact:
    name: Charles7c
    email: charles7c@126.com
    url: https://charles7c.top
  ## 许可协议信息配置
  license:
    name: Apache-2.0
    url: https://github.com/continew-org/continew-admin/blob/dev/LICENSE

其他配置

continew-server/.../resources/config 目录下,系统已默认提供三类配置文件,分别用于不同环境和场景:

  • application.yml:项目全局配置文件(所有环境共用的基础配置)
  • application-dev.yml:开发环境专用配置文件
  • application-prod.yml:生产环境专用配置文件

系统默认使用开发环境配置(在 application.yml 中指定)。您可根据实际需求进行以下操作:

  1. 修改现有配置文件中的参数值
  2. 添加新的环境配置文件(例如:application-test.yml 用于测试环境)

注意: 新增环境配置文件后,请务必同步修改 logback-spring.xml 中的日志配置,以确保日志系统正常工作。

前端配置

删除无关内容

根据实际业务需要删除无关目录、模块和业务代码。

bash
continew-admin-ui
├─ config              # Vite 插件配置
├─ public              # 公共静态资源(favicon.ico、logo.svg)
├─ src
  └─ router
     └─ route.ts (静态路由配置,实际开发时删除其中【关于项目】的路由配置)
├─ .env.development    # 开发环境配置
├─ .env.production     # 生产环境配置
├─ .env.test           # 测试环境配置
├─ eslint.config.js    # ESLint 配置
├─ index.html
├─ package.json
├─ package-lock.json
├─ pnpm-lock.yaml
├─ tsconfig.json
├─ vite.config.ts
├─ .gitignore(Git 忽略文件相关配置文件)
├─ .github(GitHub 相关配置目录,实际开发时直接删除)
├─ .image(截图目录,实际开发时直接删除)
├─ .vscode(VSCode 配置目录)
├─ LICENSE(开源协议文件)
├─ CHANGELOG.md(更新日志文件,实际开发时直接删除)
└─ README.md(项目 README 文件,实际开发时替换为真实内容)

请查阅 前端手册/移除代码 移除百度统计及广告代码。

修改 package.json

编辑 continew-admin-ui/package.json 文件,更新其中的【项目配置】信息。

修改控制台启动输出

编辑 continew-admin-ui/config/plugins/app-info.ts 文件,调整控制台启动输出内容。

修改 settings.json

编辑 continew-admin-ui/src/config/settings.json 文件,调整其中的【页面布局及高级配置】。(建议在系统中通过可视化进行主题配置,配置完成后复制配置到该文件)

修改品牌元素

启动前后端项目后,打开【系统管理】->【系统配置】页面,修改品牌元素(名称、Logo、版权声明等)。

温馨提示

品牌信息存储于 sys_option(参数表)中,也可直接在数据表中修改。若通过非页面操作修改配置,需手动清理相关 Redis 缓存。

其他配置

continew-admin-ui 根目录下,系统已默认提供两种环境的配置文件:

  • .env.development:开发环境配置示例
  • .env.production:生产环境配置示例

项目启动和构建命令默认关联对应的环境配置:pnpm dev 命令默认使用开发环境配置,pnpm build 命令默认使用生产环境配置。

若需根据实际需求调整配置,您可以:

  1. 修改现有的环境配置文件
  2. 添加新的环境配置文件(例如:.env.test 用于测试环境)

注意: 添加新环境配置文件后,请同步更新 package.json 中的 scripts 配置,确保新环境能够被正确使用。

新建模块

新建模块

准备工作完成后,开始开发【岗位管理】功能。为方便演示新模块的创建及使用,将该功能划分到【continew-demo】模块。

  1. 右键单击项目名称,依次选择【新建】->【模块】

  2. 在弹出的【新建模块】窗口中,依次输入项目信息

    1

    2

配置模块依赖

  1. continew-admin/pom.xml 中进行版本锁定,使内部模块间依赖时无需标明版本号

    3

  2. continew-server/pom.xml 中引入新增模块(continew-server 为最终打包部署模块)

    4

  3. continew-demo/pom.xml 中引入公共模块,并参考其他模块修改模块信息

    continew-demo/pom.xml
    xml
    <dependencies>
        <!-- 公共模块(存放公共工具类,公共配置等) -->
        <dependency>
            <groupId>top.continew.admin</groupId>
            <artifactId>continew-common</artifactId>
        </dependency>
    </dependencies>

    5

新建数据表

根据需求设计岗位管理数据表,并在目标数据库中创建该表。

sql
CREATE TABLE IF NOT EXISTS `sys_post` (
    `id`          bigint(20)   AUTO_INCREMENT              COMMENT 'ID',
    `name`        varchar(30)  NOT NULL                    COMMENT '名称',
    `description` varchar(200) DEFAULT NULL                COMMENT '描述',
    `sort`        int          NOT NULL DEFAULT 999        COMMENT '排序',
    `status`      tinyint(1)   UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
    `create_user` bigint(20)   NOT NULL                    COMMENT '创建人',
    `create_time` datetime     NOT NULL                    COMMENT '创建时间',
    `update_user` bigint(20)   DEFAULT NULL                COMMENT '修改人',
    `update_time` datetime     DEFAULT NULL                COMMENT '修改时间',
    `tenant_id`   bigint(20)   NOT NULL DEFAULT 0          COMMENT '租户ID',
    PRIMARY KEY (`id`),
    INDEX `idx_create_user`(`create_user`),
    INDEX `idx_update_user`(`update_user`),
    INDEX `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位表';

代码生成

创建数据表后,启动前后端项目,登录系统后,点击【代码生成】菜单,检查列表中是否存在 sys_post 岗位表记录。

6

生成配置

点击 sys_post 岗位表记录的【配置】按钮,在弹出的配置对话框中,依次完成生成配置和字段配置,设置完成后点击【确定】按钮关闭对话框。

7

8

预览及生成

点击 sys_post 岗位表记录的【生成】按钮,在弹出的预览对话框中可查看、复制生成的代码,或直接点击【下载】按钮将代码保存到本地。

9

将生成的前、后端代码分别放入对应项目中。

10

11

温馨提示

  • 目前代码生成功能主要用于生成主体框架结构,前端代码可能需要参考其他模块进行调整
  • 如遇使用问题,可优化代码生成模板,欢迎提交 PR 贡献改进

添加路由

在目标数据库执行菜单 sql 脚本,初始化路由数据。

12

13

清理菜单缓存

重新启动前后端项目,点击【系统管理】目录中的【菜单管理】,进入菜单管理页面。点击【清理缓存】按钮,清理全局菜单缓存。

14

清理完后,刷新网页,即可看到新增的菜单项。

15

验证功能

进入【岗位管理】页面,点击【新增】按钮,添加岗位信息进行功能验证。

16

根据需要修改

至此,【岗位管理】已初步开发完成,您可根据实际需求进行进一步完善和调整。

  • 调整菜单图标、上级菜单
  • 调整表单项样式

开发建议

实际开发中,建议多参考已有模块的代码风格、组件使用方式和代码规范。待熟悉项目结构后,再进行更大规模的调整,形成团队专属的开发规范。

友情提示

🎉 恭喜你!你已经掌握了 ContiNew Admin 项目开发流程!你的操作也太“丝滑”了!如果这个过程中遇到了未知错误,你也确认自己操作无误的话,可以在常见问题中先找找看。

项目每增长一颗 star,可以给维护者们注入莫大的激情,诚恳的希望您能动动发财的小手,为 ContiNew Admin 点亮一颗小星星。

GitHub Stars  Gitee Stars  GitCode Stars

常见问题

项目 dev 分支可以直接用来开发吗?

不建议直接使用 dev 分支进行开发。dev 分支作为开发分支,可能包含未完成的重构内容或未经代码审核与功能测试的 PR,稳定性较低,出现问题的概率较高。若当前已处于版本开发后期,且您有足够精力跟进后续升级,可考虑使用。

在目录下只添加了一个菜单,目录不显示

这是 GiDemo(ContiNew Admin v3.x-v4.x 所用前端模板) 中的默认配置:当目录下只有一个菜单时,会直接显示菜单而不展示目录层级。如需恢复单菜单的目录层级展示,可通过回滚此提交实现:目录下仅有一个菜单时平铺展示

相关处理代码可查阅:continew-admin-ui/src/layout/components/Menu/MenuItem.vue

代码生成器生成的代码和预期有差距

本问题仅针对生成效果与预期有差距的情况(若代码生成完全不可用,请先排查操作是否正确)。

项目代码生成器基于 Freemarker 模板 + 配置数据渲染生成,生成效果取决于模板(ftl)的完善程度和场景判断精细度。从项目设计角度,代码生成器的核心目标是 减少样板化代码编写 。对于普通单页面 CRUD 功能,它已能节省 80% 以上的编码时间,您只需调整样式并添加业务逻辑即可完成开发。对于较复杂的页面,建议参考已有页面代码进行修改,相比无代码生成器时需编写大量样板类和文件,这种方式已大幅简化开发流程。

简言之,当前代码生成器可生成大部分样板化代码,但细节仍需您参考已有页面自行调整。

随着用户需求增长,我们计划在 5.x 版本中优先强化代码生成功能,具体优化方向包括:

  1. 配置流程步骤化,跳转至配置页进行详细设置
  2. 支持父级模型选择
  3. 支持弹窗类型(抽屉/对话框)选择
  4. 在现有排序功能基础上,支持字段增减
  5. 增加新增表单与更新表单的区分示例
  6. 关联枚举与数据类型合并
  7. 支持选择 CRUD API 类型及鉴权配置
  8. 尝试支持主子表场景

若您对这些优化方向感兴趣,欢迎交流意见或参与 PR 完善。

开发业务代码时,编译后源代码文件头部自动生成 ContiNew License 协议头

需修改 continew-admin/pom.xml 中的代码格式化插件配置:

  1. 移除 <licenseHeader> 相关配置
  2. 删除 continew-admin/.style/license-header 文件

若无需使用代码格式化插件,可直接移除整个插件配置并删除 continew-admin/.style 目录。

xml
<build>
    <!-- 代码格式化插件 -->
    <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>apply</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <java>
                <removeUnusedImports/>
                <eclipse>
                    <file>.style/p3c-codestyle.xml</file>
                </eclipse>
                <licenseHeader> // [!code --]
                    <file>.style/license-header</file> // [!code --]
                </licenseHeader> // [!code --]
            </java>
        </configuration>
    </plugin>
</build>
在根目录执行 mvn compile 命令正常,但在单个子模块执行时报错 Could not find resource '.style/p3c-codestyle.xml'

此问题源于代码格式化插件配置的路径问题。插件在顶级项目中配置,且 p3c-codestyle.xml 使用相对路径,子模块继承配置后无法找到该文件。

解决方法如下:

  1. 将插件配置中的 p3c-codestyle.xml 路径定义为属性变量,在各子模块中覆盖该属性
  2. 在每个子模块中单独配置代码格式化插件,并指定正确的相对路径
  3. 移除代码格式化插件,改为在 IDE 中手动导入 p3c-codestyle.xml 配置(具体方法可自行搜索)

目前项目暂未优化此问题,主要因为本项目开发中通常采用整体编译方式,且上述解决方案均存在一定复杂度。后续我们将探索更优雅的解决方式,例如:CheckStyle。

xml
<build>
    <!-- 代码格式化插件 -->
    <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>apply</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <java>
                <removeUnusedImports/>
                <eclipse>
                    <file>.style/p3c-codestyle.xml</file>
                </eclipse>
                <licenseHeader>
                    <file>.style/license-header</file>
                </licenseHeader>
            </java>
        </configuration>
    </plugin>
</build>
实际开发后,项目怎么跟进升级到最新版本?

Continew Admin 项目包含两部分核心内容:

  1. Starter 中的通用配置和组件能力
  2. Admin 本体中的通用业务代码

Admin 本体是一个代码模板,提供了项目基础架构和通用业务代码。下载后,您可基于现有代码和规范开发专属业务。由于业务代码的独特性,Admin 本体不存在直接更新的概念。

若您发现已有代码存在 Bug,或 Admin 项目更新中修复了相关 Bug,可查看对应提交记录,参考修改您项目中的对应部分代码。

对于 Starter 部分,由于已发布至 Maven 中央仓库,您可像升级其他外部依赖(如 Spring、Hutool 等)一样直接更新版本。建议升级前参考 Admin 本体项目中关于 Starter 版本升级的提交记录。

关于框架升级的详细说明,请查看《框架升级》。