For a dependency injection framework for software development, the strongest matches are autofac/autofac (Autofac is a comprehensive dependency injection container for), google/guice (Guice is a comprehensive dependency injection framework for Java) and jeffijoe/awilix (Awilix is a comprehensive dependency injection container for JavaScript). square/dagger and symfony/dependency-injection round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Compare the top dependency injection frameworks for your language. Explore hand-picked libraries ranked by activity to find the best fit for your project.
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
Autofac is a comprehensive dependency injection container for .NET that natively supports constructor injection, advanced service lifecycle management, auto-wiring via assembly scanning, and modular configuration.
Guice is a Java dependency injection framework and component container. It automates object wiring by mapping interfaces to implementations via a central injector, removing the need for manual factory patterns and constructor calls. The framework provides specialized support for aspect-oriented programming, allowing for the interception and modification of method execution to implement shared cross-cutting concerns. It also functions as a persistence manager to coordinate transaction boundaries and manage the lifecycle of entity managers within a dependency-injected environment. Its core cap
Guice is a comprehensive dependency injection framework for Java that natively supports constructor injection, auto-wiring, interface-based binding, and sophisticated service lifecycle management.
Awilix is a JavaScript dependency injection framework and inversion of control container. It provides a centralized system for registering and resolving services, decoupling application components by automating how dependencies are created and passed to the functions or classes that require them. The framework features an automatic module loader that scans the filesystem using glob patterns to register dependencies based on filenames and exports. It supports parameter-name-based injection and proxy-based resolution to manage how dependencies are delivered to constructors and functions. The s
Awilix is a comprehensive dependency injection container for JavaScript and TypeScript that provides constructor injection, service lifecycle management, and auto-wiring through filesystem scanning, making it a direct match for your requirements.
Dagger is a compile-time dependency injection framework for Java and Android that automates object creation and lifecycle management. It functions as a static dependency injector and graph validator, resolving object requirements during the build process to avoid runtime reflection and prevent crashes caused by missing bindings. The framework distinguishes itself by using static analysis and code generation to produce factory classes at build time. It employs qualifier-based type differentiation to manage multiple implementations of the same type and provides scope-based lifecycle management
Dagger is a compile-time dependency injection framework that provides robust support for constructor injection, service lifecycle management, and interface-based binding through static code generation.
This project is a PHP dependency injection container and framework designed to centralize object construction and manage class dependencies. It serves as a service container and configuration registry that automates object lifecycles and manages references between services to decouple application components from their specific dependencies. The system handles the instantiation and wiring of objects through both constructor and setter injection. It provides a centralized registry for storing reusable parameters and service definitions, which prevents the hardcoding of settings across the appli
This is a comprehensive dependency injection container for PHP that natively supports constructor injection, service lifecycle management, auto-wiring, and modular configuration through externalized files.
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
Fx is a comprehensive dependency injection framework for Go that provides automated constructor-based wiring, interface binding, and robust lifecycle management for complex application components.
TypeDI is a TypeScript dependency injection container and inversion of control tool. It functions as a centralized registry and service locator that manages object instantiation and decouples component dependencies using type inference and decorators. The project provides scoped dependency management to isolate service instances within specific contexts, preventing data leakage between different execution flows. It supports flexible service resolution through the use of type-safe tokens and the ability to map unique identifiers or class constructors to specific service instances. The contain
TypeDI is a comprehensive dependency injection container for TypeScript that natively supports constructor injection, auto-wiring via decorators, and granular service lifecycle management.
This project is a type-safe dependency injection framework for Go that manages application lifecycles and injects dependencies into structures using reflection and metadata tags. It functions as a service lifecycle manager and an interface binding library to decouple service consumption from concrete implementations. The framework utilizes a hierarchical service container, organizing services into a tree of nested scopes where child containers inherit dependencies from their ancestors. It includes a dependency graph visualizer for inspecting relationships and invocation chains, as well as a s
This is a comprehensive dependency injection framework for Go that provides constructor injection, interface-based binding, and robust service lifecycle management through a hierarchical container system.
Nest is a server-side framework for building scalable and maintainable enterprise-grade applications using TypeScript. It provides a modular architecture that organizes code into encapsulated, reusable modules, utilizing a dependency injection container to manage object lifecycles and resolve component dependencies through declarative metadata. The framework distinguishes itself through a platform-agnostic abstraction layer that decouples core logic from underlying HTTP servers, allowing for flexible implementation choices. It employs a middleware-based request pipeline that processes traffic
Nest is a comprehensive server-side framework that features a robust, built-in dependency injection container supporting constructor injection, auto-wiring, and modular lifecycle management, making it a flagship implementation of these patterns.
Spring Framework is an enterprise Java framework providing a comprehensive infrastructure for building server-side applications. It functions as a dependency injection container and a Java application framework designed to support scalable backend development through modular architecture. The project provides tools for aspect-oriented programming to intercept method calls using dynamic proxies, allowing the application of cross-cutting concerns such as security and transactions. It also includes a centralized system for managing object lifecycles and coordinating component wiring by injecting
Spring Framework is the industry-standard Java framework that provides a robust, feature-complete dependency injection container with full support for constructor injection, auto-wiring, and complex service lifecycle management.
Dagger is a compile-time dependency injection framework for Java and Android applications. It automates the construction and wiring of object graphs by generating static source code during the build process, which eliminates the need for reflection or runtime bytecode generation. The framework distinguishes itself by performing strict validation of the entire dependency structure before the application runs, ensuring that all required bindings are satisfied and identifying circular references early. It manages object lifecycles through scoped containers and supports lazy resolution, allowing
Dagger is a compile-time dependency injection framework that provides robust support for constructor injection, service lifecycle management, and auto-wiring through static code generation, making it a flagship tool for managing object graphs in Java and Android.
the ninja of .net dependency injectors
Ninject is a mature dependency injection framework for .NET that provides constructor injection, automatic wiring, and flexible service lifecycle management, making it a comprehensive solution for implementing inversion of control.
This repository contains all relevant information about Unity Container suit
Unity is a comprehensive dependency injection container that provides robust support for constructor injection, service lifecycle management, and auto-wiring, making it a flagship implementation of the requested patterns.
Simple Injector is a comprehensive dependency injection container for .NET that natively supports constructor injection, auto-wiring, and robust service lifecycle management through a modular configuration API.
mini-spring is a Java dependency injection framework and inversion of control container. It manages the full lifecycle of beans, including instantiation, property population, and scope management, while providing a system for automating the wiring of components. The project implements a Java AOP framework that uses dynamic proxies to intercept method calls for cross-cutting logic. It also functions as a Java component scanner to automatically discover and register managed objects via annotations and as a Java event bus to decouple components through a publish-subscribe multicast system. The
This is a lightweight Java dependency injection and inversion of control container that provides essential features like bean lifecycle management, auto-wiring, and annotation-driven configuration.
Koin is a dependency injection framework for Kotlin applications that manages object lifetimes and resolves dependencies through a lightweight container. It functions as a multiplatform library, allowing shared object definitions and resource bindings to be reused across different target platforms and source sets. The framework provides a system for resolving dependencies directly within user interface components to decouple business logic from view implementations. It includes a compile-time dependency validator that analyzes dependency graphs during the build process to detect missing bindi
Koin is a dedicated dependency injection framework for Kotlin that provides constructor injection, service lifecycle management, and auto-wiring through a DSL, making it a comprehensive solution for managing object graphs in multiplatform applications.
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
InversifyJS is a comprehensive dependency injection container for TypeScript that natively supports constructor injection, service lifecycle management, auto-wiring, and interface-based binding.
Dependency injection library for JavaScript and TypeScript in 5.1K. It is an extraction of the Angular's dependency injection which means that it's feature complete, fast, reliable and well tested.
This library provides a robust dependency injection container for TypeScript and JavaScript that supports constructor injection, auto-wiring, and service lifecycle management, directly mirroring the architecture used in Angular.
Zend Framework is a comprehensive set of decoupled components for building modular, event-driven web applications. It implements an MVC architecture to separate business logic from the user interface and provides a structured request-handling system through a sequential middleware pipeline. The project features a factory-driven dependency injection container to automate object instantiation and manage class lifecycles. It also includes a comprehensive security suite for verifying user identities and restricting resource access using access control lists and role-based access control adapters.
This framework includes a robust, factory-driven dependency injection container that supports service lifecycle management and auto-wiring, making it a suitable tool for implementing inversion of control patterns.
ZIO is a functional effect system for the JVM that models asynchronous and concurrent programs as pure, composable values with typed error handling and dependency injection. Its core identity is built on fiber-based concurrency, where lightweight, non-blocking fibers execute millions of concurrent tasks with structured lifecycle management, and a dual-channel error model that separates expected business failures from unexpected system defects at compile time. The system provides effect-typed dependency injection through a layer-based dependency graph, pull-based reactive stream processing with
ZIO provides a robust, type-safe dependency injection system through its environment-based effect model, which handles service lifecycles and modular configuration as a core part of its functional architecture.
AngularJS is a structural framework for building dynamic web applications by extending standard HTML with custom tags and attributes. It operates as a client-side template engine that transforms declarative markup into interactive components, organizing application logic through a model-view-controller pattern. By utilizing a centralized dependency injection container, the framework manages the lifecycle of services and components to ensure modularity and maintainable architecture. The framework is defined by its two-way data binding mechanism, which automatically synchronizes data models wit
AngularJS is a comprehensive web framework that includes a robust, built-in dependency injection container capable of managing service lifecycles, auto-wiring, and modular configuration.
Angular is a platform for building web applications using a component-based architecture. It provides a comprehensive suite of tools for managing encapsulated UI units, including hierarchical dependency injection, a declarative template system, and fine-grained reactivity through signals. The framework supports complex application requirements such as client-side routing, form management, and internationalization. The project includes a command-line interface for scaffolding and build automation, alongside a testing ecosystem for unit and integration verification. It offers multiple rendering
Angular includes a robust, built-in dependency injection container that supports constructor injection, hierarchical service scoping, and auto-wiring, making it a comprehensive framework for managing service lifecycles within web applications.
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
This library provides a reflection-based dependency injection container for Go that supports constructor injection and auto-wiring, making it a direct implementation of the requested pattern.
Kotlin-inject is a dependency injection framework for Kotlin that utilizes compile-time code generation to construct type-safe object graphs. By processing declarative annotations during the build process, the library eliminates the need for runtime reflection, ensuring that dependency resolution and validation occur before the application executes. The framework distinguishes itself through its native support for Kotlin Multiplatform, enabling consistent dependency management across shared and platform-specific codebases. It provides specialized mechanisms for assisted injection, allowing de
This is a compile-time dependency injection library for Kotlin that supports constructor injection and interface-based binding, making it a direct tool for managing service lifecycles in your application.
This library provides a dependency management system for Swift applications that utilizes an environment-based approach to distribute services and utilities throughout a codebase. By leveraging a centralized container, it eliminates the need for manual data passing or global state, allowing services to be injected into the application hierarchy automatically. The framework distinguishes itself through a type-safe mechanism that uses key paths and property wrappers to access and override services. This architecture supports the substitution of live service implementations with controlled, pred
This library provides a structured way to manage dependencies and service lifecycles in Swift applications using an environment-based approach that supports auto-wiring and modular configuration.
Modular is a framework for the Flutter ecosystem that provides a structured approach to application architecture through module-based dependency injection and navigation management. It enables developers to organize complex codebases into independent, decoupled units, facilitating the management of shared services and object lifecycles within specific application scopes. The framework distinguishes itself by offering hierarchical dependency scoping and lazy resolution, which allow for the automatic creation and disposal of objects based on the active module or page lifecycle. It also features
This framework provides a dependency injection and modularization system for Dart and Flutter applications, offering features like service lifecycle management and auto-wiring to help organize and decouple your code.
Small-Spring is a simplified Java implementation of the Spring framework designed to study the internal architecture of inversion of control containers and dependency injection frameworks. It functions as a bean container that manages object lifecycles and resolves dependencies through automated instantiation and property injection. The project implements a mechanism for intercepting method calls using dynamic proxies to support aspect-oriented programming. It separates cross-cutting concerns from business logic by wrapping target objects to modify method executions. The system covers compon
Small-Spring is a functional dependency injection container that provides core features like bean lifecycle management, auto-wiring, and interface-based binding, specifically designed to demonstrate the architecture of inversion of control frameworks.
QFramework is a Unity game architecture framework designed to separate presentation, system, and data logic. It implements a layered software architecture to manage complex game states and provides a game engine utility library to reduce boilerplate code. The framework is centered on the Command Query Responsibility Segregation pattern, which separates data modification commands from data retrieval queries. It utilizes a dependency injection container to manage the lifecycles and resolution of singletons and modular components, alongside an event-driven system for state synchronization to pre
This framework provides a dependency injection container specifically tailored for managing service lifecycles and component resolution within Unity game projects, fulfilling the core requirements for inversion of control in that domain.
Martini is a web framework for the Go programming language that provides a toolkit for building web applications. It functions as a routing engine and an HTTP middleware pipeline to map network requests to specific handler functions. The framework is distinguished by its dependency injection system, which automatically resolves and provides requested service types as arguments to handler functions. This allows for the decoupling of business logic from infrastructure by matching requested types against a registry of available services. The project covers a broad range of web capabilities, inc
Martini is a web framework that features a built-in dependency injection container designed to automatically resolve and inject services into handler functions, fulfilling the core requirement for managing service lifecycles and wiring.
tiny-spring is a Java inversion of control container and aspect-oriented programming framework. It provides a system for managing object lifecycles and dependency injection to decouple application components. The project features a bytecode proxy generator that enables method interception and behavioral modification for classes that do not implement interfaces. It uses pointcut expressions to match specific classes and methods for the execution of cross-cutting logic via dynamic proxies. The framework manages singleton components and resolves object dependencies using lazy initialization. Ap
This Java framework provides a dedicated inversion-of-control container that supports constructor and property injection, service lifecycle management, and automated component resolution, making it a direct implementation of the requested pattern.
Inject is a dependency injection library for Go that manages object lifecycles and wires application components by automating the provision of dependencies. It functions as a reflection-based container that maps specific values to their corresponding types, enabling the automatic retrieval and injection of objects into application logic. The library distinguishes itself through its ability to perform automatic function invocation, where it inspects function signatures at runtime to resolve and provide required arguments from a central registry. It also supports struct field injection, which p
This library provides a reflection-based container for Go that handles dependency injection and service lifecycle management through automatic function invocation and type-based mapping.
FastStream is an asynchronous Python framework designed for building event-driven microservices. It provides a unified abstraction layer for interacting with various message brokers, enabling developers to manage event production and consumption through a consistent interface while maintaining access to native provider-specific features. The framework centers on a decorator-based routing model that binds application logic directly to broker topics, supported by a built-in dependency injection container that resolves resources at runtime. The framework distinguishes itself through its deep int
FastStream is an event-driven microservices framework that includes a built-in dependency injection container capable of resolving resources and managing application context, fitting the core requirements for service lifecycle management and injection.
Robust dependency injection service container framework
This framework provides a robust dependency injection container for the Crystal language, supporting core patterns like service lifecycle management and auto-wiring to help manage application dependencies.
Compile-time dependency injection for Dart and Flutter
This library provides compile-time dependency injection for Dart and Flutter applications, supporting constructor injection and modular configuration to manage service lifecycles.
This library provides a reflection-based dependency injection container for Go that supports automatic object graph creation and lifecycle management, fitting the core requirements for an inversion of control tool.
Provider is a state management and dependency injection framework for Flutter. It simplifies the sharing of data across a widget tree by using a system that manages the injection of objects and services with automated lifecycle and resource disposal. The framework distinguishes itself through reactive state containers that bridge asynchronous data from streams and futures directly into the component tree. It supports state derivation, allowing new objects to be constructed and synchronized based on values observed from multiple upstream providers. To maintain performance, it provides selectiv
This framework provides a robust dependency injection and service lifecycle management system specifically tailored for the Flutter ecosystem, supporting interface-based binding and automated resource disposal.
This library provides a dependency injection container that supports constructor injection and service lifecycle management, serving as a direct implementation of the requested pattern.
LoopBack Next is a Node.js API framework used for building REST and multi-protocol APIs. It functions as an OpenAPI server implementation that can either generate machine-readable specifications from code or produce implementation controllers and models from existing specifications. The framework distinguishes itself through a central dependency injection container and a repository-pattern data access layer. This architecture decouples application logic from component construction and persistent storage, allowing for a pluggable system where data sources and business logic are isolated throug
LoopBack Next is a full-stack API framework that features a robust, built-in dependency injection container designed for managing service lifecycles, constructor injection, and interface-based bindings.
AndroidAnnotations is a suite of tools designed to automate the generation of repetitive boilerplate and setup code for mobile application development. It functions as a code generation tool that reduces manual effort by creating the plumbing required to initialize Android components and views. The project provides specialized frameworks for dependency injection, concurrency management, and view binding. It automates the assignment of system services, resources, and UI elements to fields and maps user interface events directly to methods to eliminate the need for anonymous listener classes.
This framework provides dependency injection and service lifecycle management specifically for Android applications by using annotation processing to automate component wiring and binding.
| Repository | Stars | Sprache | Lizenz | Letzter Push |
|---|---|---|---|---|
| autofac/autofac | 4.6K | C# | MIT | |
| google/guice | 12.7K | Java | Apache-2.0 | |
| jeffijoe/awilix | 4.1K | TypeScript | mit | |
| square/dagger | 7.3K | Java | Apache-2.0 | |
| symfony/dependency-injection | 4.2K | PHP | MIT | |
| uber-go/fx | 7.4K | Go | mit | |
| typestack/typedi | 4.2K | TypeScript | MIT | |
| samber/do | 2.6K | Go | mit | |
| nestjs/nest | 75.9K | TypeScript | MIT | |
| spring-projects/spring-framework | 60.1K | Java | Apache-2.0 |