Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

ZacSweers/metro

说明与用途

**项目简介**
ZacSweers/metro 是一套面向 Kotlin 的多平台、编译时依赖注入框架,能够在编译阶段生成所需的注入代码,从而消除运行时反射开销。它以轻量、类型安全和零配置为核心设计理念,适用于 JVM、Android、JS 与原生平台。

**价值**

  • **降低业务代码复杂度**:通过自动生成依赖图,开发者无需手写繁琐的工厂或 Service Locator。
  • **提升运行时性能**:编译时完成注入,避免了反射和 ServiceLoader 带来的额外开销。
  • **跨平台统一**:同一套 DI 方案可在 Android、服务器、JS 与 Kotlin/Native 项目中复用,减少学习成本和维护工作。

**典型接入方式**

  1. 在项目 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")
   }
  1. 使用 @Inject、@Module、@Provides 等注解标记需要注入的类和提供者。
  2. 运行构建后,KSP(Kotlin Symbol Processing)会生成对应的 *Component 类,直接在代码中调用 Component.create() 或 component.inject(this) 即可完成注入。
  3. 对于多平台项目,只需在各平台的 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
原始来源