跳转至

Best Practices

Keys

  • Prefer type keys; use string keys for dynamic bindings only
  • Use GenericKey to disambiguate generics

Lifetimes

  • Default to TRANSIENT unless stateful or expensive
  • Use SINGLETON for stateless or heavy resources
  • Use SCOPED for request/session-bound dependencies

Factories

  • Use factories for resources needing explicit creation/teardown (DB connections)

Interceptors & Diagnostics

  • Add interceptors for logging, metrics, and error traces
  • Export dependency graphs to review architecture

Testing

  • Override registrations in tests via override=True
  • Provide fakes/stubs per scope

Web Frameworks

  • Bind a scope per request (FastAPI/Flask/Django integrations)

Generics

  • Register concrete implementations with register_generic