跳到主要内容

特性开关

Coco 的所有内置能力都通过稳定的 CocoFeature 标识管理,可以在应用侧声明式地启停。功能选择优先使用 YAML 或 @CocoFeatures;旧的 CocoConfigurer Java 钩子仅保留兼容,已不再推荐。

通过 YAML 声明

application.yml 中通过 coco.features.disabled 禁用功能:

coco:
features:
disabled:
- mybatis-plus
- tenant
- data-permission

通过注解声明

也可以通过 Java 配置声明:

@CocoFeatures(disabled = {
CocoFeature.TENANT,
CocoFeature.DATA_PERMISSION
})
@Configuration(proxyBeanMethods = false)
class ApplicationCocoConfiguration {
}

依赖传播

功能之间存在依赖关系。当你禁用一个被依赖的功能时,依赖它的功能会被自动一并禁用,避免半装配状态。

例如禁用 mybatis-plus 会级联禁用依赖它的 tenantdata-permissioncodegen

内置功能标识

标识功能依赖
webWeb 运行时
mybatis-plusMyBatis-Plus 集成
audit审计管道
security安全上下文
tenant多租户隔离mybatis-plus, security
data-permission数据权限mybatis-plus, security
openapiOpenAPI 元数据web, security
rate-limit限流web
idempotency幂等web
scheduling动态定时任务
lock分布式锁
storage对象存储
messaging消息与事件
cache两层缓存
notification通知通道
captcha验证码
codegen代码生成mybatis-plus

与模块级开关的关系

coco.features.disabled 控制的是整个功能的装配。而每个功能内部通常还有更细粒度的 enabled 属性(如 coco.idempotency.enabled),用于在功能已装配的前提下控制具体行为。两者是不同层级:特性开关决定"是否加载这个模块",模块属性决定"加载后是否生效"。