API 参考

Starter 选择指南

不同项目类型的 Starter 选择建议。

Nebula Starter 选择指南

Starter 负责组合依赖并提供最低优先级的默认开关。应用只选择一个最接近自身形态的 主 Starter,再按需增加独立模块,避免同时引入多个职责重叠的 Starter。

选择表

Starter 适用场景 主要能力
nebula-starter-minimal CLI、批处理、只需要基础能力的服务 Foundation、自动配置、基础 Spring Boot
nebula-starter-web REST API、管理后台、单体 Web 应用 Web、Security、Persistence、Cache
nebula-starter-service 需要注册发现和服务间调用的业务服务 Web、HTTP/gRPC RPC、Nacos、RabbitMQ、Redis Lock
nebula-starter-gateway API 网关 Gateway WebFlux、Nacos、Redis 限流、Resilience4j
nebula-starter-ai LLM、Embedding、RAG 应用 Spring AI、AI Core、Cache
nebula-starter-mcp MCP Server 或 MCP Client 应用 AI Starter、MCP、WebMVC
nebula-starter-task XXL-JOB 执行器 Task、Web、HTTP RPC,可选 Nacos
nebula-starter-api 服务间共享契约 RPC 接口与注解、Validation、MyBatis-Plus 类型
nebula-starter-all 需要大部分框架能力的全功能单体 Web、数据、RPC、发现、消息、存储、搜索、任务、AI、锁、WebSocket

决策顺序

只定义接口和 DTO                 -> nebula-starter-api
只需要基础工具                   -> nebula-starter-minimal
需要 MCP                         -> nebula-starter-mcp
主要运行定时或调度任务           -> nebula-starter-task
需要 AI,但不需要完整业务服务栈  -> nebula-starter-ai
作为统一入口转发 HTTP 请求       -> nebula-starter-gateway
需要 Nacos 和 RPC                -> nebula-starter-service
普通 REST API                    -> nebula-starter-web
明确需要大部分模块               -> nebula-starter-all

添加依赖

<properties>
    <nebula.version>2.1.0</nebula.version>
</properties>

<dependency>
    <groupId>com.nebula-projects</groupId>
    <artifactId>nebula-starter-service</artifactId>
    <version>${nebula.version}</version>
</dependency>

默认启用项

Starter 默认开关
Minimal 无;Security 本身为默认启用的纯内存能力
Web Persistence、Cache
Service Persistence、Cache、HTTP RPC、RPC Discovery、Nacos、Redis Lock
Gateway Gateway、Nacos
AI AI、Cache
MCP AI、MCP
Task Task、HTTP RPC
API
All Persistence、Cache、RabbitMQ、HTTP RPC、RPC Discovery、Nacos、Redis Lock、Task、AI、Spring WebSocket

依赖存在不等于功能一定启用。例如 Service Starter 携带 gRPC 和 RabbitMQ 实现,但默认只 启用 HTTP RPC;需要使用 gRPC 或 RabbitMQ 时应显式配置对应开关。

覆盖默认值

Starter 默认值优先级低于应用配置,可以直接关闭:

nebula:
  data:
    persistence:
      enabled: false
  discovery:
    nacos:
      enabled: false
  lock:
    enabled: false

nebula-starter-all 默认启用较多外部组件。开发环境缺少 RabbitMQ、Nacos 或 Redis 时, 需要在应用配置中逐项关闭,仓库中的 examples/starter-all-example 提供了可运行示例。

API 契约模块

API 模块只放以下内容:

  • RPC 服务接口
  • DTO、枚举和校验注解
  • 与接口签名直接相关的通用类型

API 模块不放 Controller、Repository、服务实现、数据库连接配置或 Starter 默认开关。

依赖排除

确实不需要某个传递实现时,可使用 Maven exclusion:

<dependency>
    <groupId>com.nebula-projects</groupId>
    <artifactId>nebula-starter-service</artifactId>
    <version>${nebula.version}</version>
    <exclusions>
        <exclusion>
            <groupId>com.nebula-projects</groupId>
            <artifactId>nebula-messaging-rabbitmq</artifactId>
        </exclusion>
    </exclusions>
</dependency>

排除实现后同步关闭对应开关,避免配置表达的能力与 classpath 不一致。

相关文档