abacus.base.demo
是前后端分离的基于 Spring Boot 的基础项目,作为使用 agent 应用开发前后端项目的基础模板。本项目自身不包含业务 Java 代码,业务能力由 abacus 框架(abacus.config、abacus.commons、abacus.fundation、abacus.business.service 等)提供,开发者/agent 在本模板上添加业务模块即可。
技术栈
| 项 | 说明 |
|---|---|
| 构建 | Maven,父工程 abacus.framework:abacus.springcloud.pom:1.5.0 |
| 框架 | Spring Boot + abacus 系列框架(配置、通用、基础、业务服务) |
| 注册/配置中心 | Nacos(见 bootstrap.yml) |
| 数据库 | MySQL / SQL Server / Oracle / 达梦,Druid 连接池 + JPA |
| 定时任务 | XXL-JOB(application-xxljob.yml) |
| 消息队列 | Kafka |
| 接口文档 | springdoc(OpenAPI) |
| 监控 | Spring Actuator + Prometheus |
目录结构
abacus.base.demo/
├── pom.xml # Maven 构建配置:依赖、多环境 profile(dev/test/prod)、打包插件
├── assembly.xml # Maven 发布包(zip)打包规则:jar + doc + sql + html
├── .project / .classpath # Eclipse IDE 工程配置(Java + Maven 项目)
├── .settings/ # Eclipse 偏好配置(编码、JDK、m2e)
├── src/
│ └── main/
│ ├── java/ # 【业务代码目录】Java 源码(当前为空,新增业务代码放这里)
│ ├── resources/
│ │ ├── config/
│ │ │ ├── dev/ # dev 环境配置(Maven profile 默认激活)
│ │ │ │ ├── application.yml # 主配置:端口、数据源、JPA、Druid、Kafka、springdoc、abacus 扫描路径等
│ │ │ │ ├── bootstrap.yml # 启动引导配置:应用名、Nacos 注册中心/配置中心
│ │ │ │ ├── application-xxljob.yml # XXL-JOB 调度中心与执行器配置
│ │ │ │ ├── logback-spring.xml # 应用日志配置
│ │ │ │ └── logback-access.xml # 访问日志配置
│ │ │ ├── test/ # test 环境配置(与 dev 文件同名同结构)
│ │ │ └── prod/ # prod 环境配置(与 dev 文件同名同结构)
│ │ ├── doc/
│ │ │ └── 升级日志.md # 版本升级日志,按版本记录更新说明
│ │ ├── sql/
│ │ │ ├── table/
│ │ │ │ ├── mysql.sql # MySQL 建表 DDL(示例表 example_category)
│ │ │ │ └── sqlserver.sql # SQL Server 建表 DDL(与 mysql.sql 对应)
│ │ │ ├── data/
│ │ │ │ └── sqlserver.sql # 初始化数据(acas 子系统/菜单/模块注册)
│ │ │ └── upgrade.xml # 数据库版本升级 SQL 配置(按版本号执行,支持多库语法翻译)
│ │ ├── vue/ # 【Vue 项目源码目录】存放 vue 项目,映射过来的,前后端分离(当前为空)
│ │ └── html/ # 【前端构建产物目录】存放 vue 项目编译后的 html 等静态资源(当前为空,由 assembly.xml 打入发布包)
│ └── (META-INF) # 若存在,会按 pom.xml 配置打入发布包
└── target/ # Maven 构建输出目录(编译产物、打包 zip,可忽略/删除)
关键配置说明(agent 开发时必须了解)
1. pom.xml
- 多环境 profile:
dev(默认)/test/prod,通过-P指定,决定加载src/main/resources/config/<env>/下的配置。 - 打包资源:仅打包
META-INF、当前环境 config 目录、sql/**到 jar 内;doc、sql、html通过assembly.xml额外打入 zip 发布包。 - 发布包:
mvn package生成${artifactId}-${version}-bin.zip(含 jar + doc + sql + html)。
2. application.yml(以 dev 为例,三个环境结构一致)
server.port:服务端口(示例 9003)。spring.datasource:Druid 数据源;enableMultiSource可开启多数据源(multidb0~multidb9预设 10 个),含defaultDB默认库、readDB读库、dynamicRelation业务路由配置。spring.jpa:JPA/Hibernate 配置,命名策略使用框架的LowercaseNamingStrategyStandardImpl。spring.kafka:Kafka 生产/消费配置。springdoc.packages-to-scan:在线接口文档扫描的包路径。abacus.controllerPackages/abacus.entitypackages:框架扫描 Controller 与实体的包路径,新增业务代码必须将包名加入此配置(示例包前缀abacus.springboot.example)。abacus.responseExcludePath:不被统一响应体包装器拦截的 URI。management.endpoints.web.base-path:Actuator 端点基础路径(/services/actuator)。
3. bootstrap.yml
spring.application.name:应用名(示例example),Nacos 中需唯一。spring.cloud.nacos:Nacos 服务地址、账号、命名空间;通过extension-configs引入公共配置(abacus-discovery.yml、abacus-acas.yml、abacus-redis.yml等)。
4. sql/ 目录
table/:建表 DDL,按数据库分文件(mysql.sql / sqlserver.sql),新建业务表需同步维护两个文件。data/:初始化数据(子系统、菜单、模块注册,依赖 acas 框架)。upgrade.xml:版本化升级 SQL,<upgrade version="yyyy-MM-dd[.count]">按版本升序执行;translator="true"时以 SQL Server 语法编写,由框架翻译到各数据库。
给 agent 的开发约定
- 新增 Java 代码:放入
src/main/java,包名建议以abacus.springboot.应用名.*为前缀(保持框架扫描配置一致,或同步修改application.yml中abacus.controllerPackages/springdoc.packages-to-scan/abacus.entitypackages)。 - 新增前端 Vue 项目:Vue 源码放在
src/main/resources/vue/,构建(编译)产物输出到src/main/resources/html/,由assembly.xml自动打入发布包。 - 新增配置项:优先写入
src/main/resources/config/<env>/application.yml对应环境,环境间保持字段一致。 - 数据库变更:建表写
sql/table/,历史变更写sql/upgrade.xml,初始化数据写sql/data/。 - 文档与日志:功能更新记录到
src/main/resources/doc/升级日志.md。 - 打包产物:
target/目录为构建输出,无需维护;发布包为target/*-bin.zip。 - 多环境配置:修改配置时需同步
dev/test/prod三个目录(或按需仅改某环境)。 - pom.xml:
<artifactId></artifactId>建议以abacus.springboot.应用名设置