--- title: 3.0.0 版本说明 description: Coco Framework 3.0.0 的模块规范化、动态多数据源与破坏性变更升级说明。 --- # 3.0.0 版本说明 **发布时间:2026-10-21** [GitHub Release](https://github.com/patton174/coco-framework/releases/tag/v3.0.0) · [完整变更](https://github.com/patton174/coco-framework/compare/v2.0.3...v3.0.0) 本版本完成 Feature 模块坐标规范化,并移除已迁出的代码生成与 Node 日志渲染能力。 升级前请逐项检查下方的兼容性说明。 ## 框架能力 - [MyBatis-Plus 动态多数据源](../features/mybatis-plus.md):在单个 `SqlSessionFactory` 下按注解或上下文 路由到多个物理数据源,保留同一条分页、租户、数据权限与 SQL 防护拦截器链;提供读写分离负载均衡与 5 个可替换 SPI。默认关闭,设置 `coco.mybatis-plus.datasource.enabled=true` 后启用。 - 启动日志收敛为单行 `ready` 记录,包含 `java` 与 `pid`,便于日志采集与容器编排识别。 - 兼容门面:原 `coco-feature-*` 坐标保留为无源码门面并依赖对应的规范模块,业务侧可以按自己的节奏迁移。 ## 破坏性变更 ### Maven 坐标 `coco-audit`、`coco-openapi`、`coco-tenant`、`coco-data-permission`、`coco-security`、`coco-web` 成为实现模块。原 `coco-feature-*` 坐标作为兼容门面继续可解析,但不再包含实现; `coco-config` 与 `coco-feature-runtime` 门面迁到 `coco-build/coco-compatibility`。 直接依赖旧坐标的项目应检查依赖树,逐步切换到规范坐标。 ### 启动日志 `CocoSpringApplicationRunListener#started` 不再输出生命周期记录;依赖多行启动日志做匹配或解析的 脚本需要调整。应用仍会输出一行 `ready`,其中包含 `java` 与 `pid`。 ### 代码生成 - Maven 插件的 `coco:generate` 目标与 `coco.codegen.*` 参数已删除。 - `CocoFeature.CODEGEN` 功能标识与 `coco-feature-codegen` 模块已删除。 - `coco.features.*` 或 `@CocoFeatures` 中残留 `codegen` 时会得到“已退役标识”的提示。 - 代码生成改由独立项目 `coco-generate` 的 CLI 负责;生成结果作为源码提交,由业务项目维护。 ### Node 日志渲染器 `CocoNodeLogRendererBootstrap`、`coco.logging.node-renderer.*`、`CocoLifecycleLogger#started` / `#startedMessage` / `#startedMessages` 以及 `coco-log-renderer` 工具已移除。 运行 `java -jar` 不再需要安装 `node`。 ## 官网与文档 官网切换到 `cocoframework.dev`,旧域名 `cocoframwork.dev` 以 301 跳转。 `CHANGELOG.md` 面向开发者,本页面向业务使用者,两者互相链接。 ## 升级检查 1. 确认 Maven Central 已发布 3.0.0,再将 `coco-parent` 或 BOM 版本更新为 `3.0.0`。 2. 执行 `mvn dependency:tree`,确认不再直接依赖已迁移的 `coco-feature-*` 坐标;如仍需兼容期, 可暂时保留门面,但不要同时声明新旧坐标。 3. 移除 `coco:generate` 相关构建配置与 `coco.codegen.*` 参数,改用 `coco-generate` 生成并提交源码。 4. 删除 `coco.logging.node-renderer.*` 配置与对多行启动日志的解析逻辑,验证单行 `ready` 记录。 5. 如需多数据源,开启 `coco.mybatis-plus.datasource.enabled` 并配置 `coco.mybatis-plus.datasource.sources`;默认事务策略为 `reject`,跨库切换需确认事务边界。 6. 执行业务项目构建与集成测试;CRUD、事务边界和业务权限仍由应用负责。