awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
uber-go avatar

uber-go/dig

0
View on GitHub↗
go.uber.org/dig↗

Dig

dig is a reflection-based dependency injection framework and object graph resolver for Go. It functions as a container that automatically satisfies type dependencies and manages the instantiation of complex networks of objects during application startup.

The project utilizes a directed acyclic graph to determine the necessary sequence for object instantiation and employs interface-driven provider mapping to decouple concrete implementations from their satisfied interfaces. It resolves the object hierarchy through reflection-based type resolution and single-pass component wiring to ensure all requirements are met before execution.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Features

  • Dependency Injection - Provides a framework for decoupling software components by injecting required dependencies at runtime.
  • Reflection-Based Dependency Resolution - Uses runtime type analysis and Go reflection to match dependency requests with available providers.
  • Dependency Graph Resolvers - Provides an engine to resolve and traverse the relationships between dependent objects during startup.
  • Concrete Type Mappings - Maps concrete implementation types to interfaces to enable decoupled object injection via reflection.
  • Go DI Frameworks - Implements a dependency injection framework specifically designed for the Go programming language.
  • Dependency Graph Construction - Constructs a directed acyclic graph to determine the correct instantiation sequence for dependent objects.
  • Automatic Graph Resolutions - Automatically assembles and resolves the dependency graph of objects at application startup.
  • Application Bootstrapping - Manages the setup of a complex network of objects and services during the initial boot sequence.
  • Lazy Instance Provisioning - Defers the creation of dependent components until they are explicitly requested by a consumer.
  • Dependency Graph Traversals - Resolves the entire object hierarchy in a single traversal to ensure all dependencies are satisfied before execution.
  • Dependency Injection - Reflection-based dependency injection toolkit.
4,470 stars·226 forks·Go·MIT·32 views

Star history

Star history chart for uber-go/digStar history chart for uber-go/dig

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

Frequently asked questions

What does uber-go/dig do?

dig is a reflection-based dependency injection framework and object graph resolver for Go. It functions as a container that automatically satisfies type dependencies and manages the instantiation of complex networks of objects during application startup.

What are the main features of uber-go/dig?

The main features of uber-go/dig are: Dependency Injection, Reflection-Based Dependency Resolution, Dependency Graph Resolvers, Concrete Type Mappings, Go DI Frameworks, Dependency Graph Construction, Automatic Graph Resolutions, Application Bootstrapping.

Which projects share features with uber-go/dig?

Projects with overlapping indexed features include: autofac/autofac — Autofac is a dependency injection framework and inversion of control container for .NET. It functions as a component… uber-go/fx — Fx is a dependency injection framework and application lifecycle manager for Go. It functions as a component model… facebookarchive/inject — Inject is a dependency injection framework for Go that automates the assembly of complex object graphs. By leveraging… inversify/inversifyjs — InversifyJS is an inversion of control framework and dependency injection library for TypeScript. It provides a… google/guice — Guice is a Java dependency injection framework and component container. It automates object wiring by mapping… alibaba/beehive — BeeHive is a modular architecture framework for iOS applications. It provides a dependency injection container, an…

Projects sharing features with Dig

These projects share indexed features with Dig. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • autofac/autofacautofac avatar

    autofac/Autofac

    4,649View on GitHub↗

    Autofac is a dependency injection framework and inversion of control container for .NET. It functions as a component registration engine that decouples class implementations from their dependencies by injecting required services via constructors or properties. The project includes an assembly scanning library to automatically discover and register components within compiled binaries based on specific type criteria. It provides a service lifetime manager to control object memory duration using singletons, instance-per-dependency, or isolated request scopes. The framework covers a broad range

    C#autofacc-sharpdependency-injection
    View on GitHub↗4,649
  • uber-go/fxuber-go avatar

    uber-go/fx

    7,354View on GitHub↗

    Fx is a dependency injection framework and application lifecycle manager for Go. It functions as a component model container that automates the instantiation and connection of components by analyzing constructor parameters and return values to resolve complex dependency graphs. The framework distinguishes itself through module-based component bundling, which encapsulates related constructors into reusable units to manage visibility and logic. It provides advanced resolution capabilities, including mapping concrete types to interfaces for decoupling, resolving dependency ambiguities via unique

    Goapp-frameworkdependency-injectionframework
    View on GitHub↗7,354
  • facebookarchive/injectfacebookarchive avatar

    facebookarchive/inject

    1,408View on GitHub↗

    Inject is a dependency injection framework for Go that automates the assembly of complex object graphs. By leveraging runtime reflection, the library dynamically inspects object structures to resolve and populate required dependencies, decoupling component initialization from business logic. The framework manages object lifecycles through both singleton and factory-based provisioning. It maintains a central registry to share singletons across an application for consistent state, while also supporting the creation of unique, private instances to isolate state between different components. To

    Go
    View on GitHub↗1,408
  • inversify/inversifyjsinversify avatar

    inversify/InversifyJS

    12,066View on GitHub↗

    InversifyJS is an inversion of control framework and dependency injection library for TypeScript. It provides a centralized container to manage object lifecycles and automate the instantiation of classes and their dependencies. The library decouples software components by mapping unique identifiers to concrete implementations. This architecture separates object creation from business logic and allows for the replacement of real service implementations with mock objects during unit testing. The framework utilizes TypeScript decorators to provide metadata-driven injection and recursive depende

    TypeScript
    View on GitHub↗12,066
Compare all 30 related projects→