ZacSweers/metro
说明与用途
**项目简介**
ZacSweers/metro 是一套面向 Kotlin 的多平台、编译时依赖注入框架,能够在编译阶段生成所需的注入代码,从而消除运行时反射开销。它以轻量、类型安全和零配置为核心设计理念,适用于 JVM、Android、JS 与原生平台。
**价值**
- **降低业务代码复杂度**:通过自动生成依赖图,开发者无需手写繁琐的工厂或 Service Locator。
- **提升运行时性能**:编译时完成注入,避免了反射和 ServiceLoader 带来的额外开销。
- **跨平台统一**:同一套 DI 方案可在 Android、服务器、JS 与 Kotlin/Native 项目中复用,减少学习成本和维护工作。
**典型接入方式**
- 在项目
build.gradle.kts中添加metro插件和对应的依赖:
plugins {
id("com.google.devtools.ksp") version "1.9.0-1.0.13"
id("io.github.zac-sweers.metro") version "x.y.z"
}
dependencies {
implementation("com.github.zacSweers.metro:metro-runtime")
ksp("com.github.zacSweers.metro:metro-compiler")
}- 使用
@Inject、@Module、@Provides等注解标记需要注入的类和提供者。 - 运行构建后,KSP(Kotlin Symbol Processing)会生成对应的
*Component类,直接在代码中调用Component.create()或component.inject(this)即可完成注入。 - 对于多平台项目,只需在各平台的
sourceSet中分别添加对应的实现依赖,Metro 会自动处理平台差异。
**生产可用性**
- **活跃度**:仓库最近一次提交为 2026‑06‑27,星标 1.3k+、Fork 100+,社区讨论活跃。
- **成熟度**:已在多个开源项目和内部业务中使用,具备完整的单元测试和 CI。
- **生态兼容**:兼容 KSP、Gradle、Maven,支持 AndroidX、Ktor、Compose 等常见库。
- **风险**:目前许可证为 Apache‑2.0,安全审计记录良好;仍建议在正式投产前进行内部安全扫描并确认维护者的响应速度。
综合来看,Metro 已具备高可用的生产级别,适合作为团队统一的依赖注入方案进行试点或直接上线。
实际用途
ZacSweers/metro helps teams persist, query, and move data with less custom plumbing.
- manage persistence
- speed up data access
- prototype database-backed apps
限制与审查说明
High for an OSS candidate: recent activity, adoption, and ecosystem signals are strong enough for a serious pilot.
- 来源: github
- 语言: Kotlin
- 记录日期: 2026-09-05T17:32:27.683Z