Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 698 Bytes

File metadata and controls

26 lines (19 loc) · 698 Bytes

Dependency Injection Guide

Intent

Use python_core.di to show a simple dependency registration pattern for services, repositories, clients, and units of work.

Lifetimes

  • SINGLETON: one instance for the process.
  • TRANSIENT: a new instance each resolve.
  • SCOPED: one instance per ContainerScope, useful for request/job state.

Example

container = Container()
container.register_type(UserRepository, UserRepository, lifetime=ServiceLifetime.SCOPED)
container.register_factory(
    RegisterUserService,
    lambda resolver: RegisterUserService(resolver.resolve(UserRepository)),
)

scope = container.create_scope()
service = scope.resolve(RegisterUserService)